キーワードマッチングの最適化(パート0)-問題とアイデア

人間が入力した特定の語彙を規制するという要件に遭遇しました。おそらく100以上の語彙があります。次のような状況(キーワードは地名よりも複雑です)

以前に処理された場合、擬似コードは次のとおりです。

string TempStr;
if(TempStr.Contains("海淀") && TempStr.Contains("北京") )
{
    return "北京市海淀区";
}
else if(TempStr.Contains("山东") && TempStr.Contains("威海") )
{
    return "山东省威海市";
}
……//等等一共两百多个else,内容也比较复杂,甚至还有正则匹配之类的
else
{
    return "匹配失败";
}

私の仕事はExcelプラグインを作成することなので、100を超えると運用効率にも影響します。また、維持するのが非常に不便で、語彙を追加するのが困難です。

過去2日間で、関連する知識が見つかり、この部分を最適化する計画を立てました。nlpでtf-idfメソッドを使用して、キーワードの類似度を計算します。

全体のプロセスは大まかに、データベースにキーワードマッピングテーブルを作成し、プラグインの起動時にディクショナリとして読み取り、類似性を計算し、使用中にクエリが使用できない場合にマッピングテーブルにアップロードします。

おすすめ

転載: www.cnblogs.com/hewish/p/12682880.html