工作中遇到一個需求,規範人為輸入的特定辭彙,大概有100多個辭彙。類似下麵的情況(關鍵詞比地名複雜一些) 之前是用if else處理的,偽代碼如下: 因為我的工作是寫Excel插件的,這一百多個 else if 太影響運行效率了,而且維護起來也很不方便,增加辭彙也困難。 這兩天找了一些相關的知識,打 ...
工作中遇到一個需求,規範人為輸入的特定辭彙,大概有100多個辭彙。類似下麵的情況(關鍵詞比地名複雜一些)
之前是用if else處理的,偽代碼如下:
string TempStr;
if(TempStr.Contains("海澱") && TempStr.Contains("北京") )
{
return "北京市海澱區";
}
else if(TempStr.Contains("山東") && TempStr.Contains("威海") )
{
return "山東省威海市";
}
……//等等一共兩百多個else,內容也比較複雜,甚至還有正則匹配之類的
else
{
return "匹配失敗";
}
因為我的工作是寫Excel插件的,這一百多個 else if 太影響運行效率了,而且維護起來也很不方便,增加辭彙也困難。
這兩天找了一些相關的知識,打算對這部分進行優化,用nlp中的tf-idf方法進行關鍵詞相似度的計算。
整個流程大致是:在資料庫中建立關鍵詞映射表,在插件啟動時讀取為字典,在使用時如果查詢不到,就計算相似度並上傳到映射表。