ブランド名 (Coca-Cola、Pepsi、7Up など) を含むテキストのリストがあります。同じ内容 (すべてのテキストを小文字にした後、まったく同じテキスト) を持つすべてのセルを並べ替えてカウントし、各テキストの数でリストを並べ替えて、最も多く表示されるテキストが最初になるようにする python スクリプトを作成しました。ほとんどの人がブランド名を正しく書くと思うからです。たとえば、次のリストがあるとします。
texts = ['Coca-Cola', 'Pepsi', 'Coca-Cola', 'Coca-Cola', 'Pepsi', 'Pespi', 'Pepsi', '7Up', '7up', 'Cola', 'Pepsi']
最初のステップの後、リストは次のようになります。
ordered_text = [
{'text': 'Pepsi', count: 4},
{'text': 'Coca-Cola', count: 3},
{'text': '7Up', count: 2},
{'text': 'Cola', count: 1},
{'text': 'Pespi', count: 1},
]
2 番目のステップでは、ngramパッケージを使用して、スペルミスを修正するために、より近いテキストを一致させようとしています。重要な注意: 私の重要な要求の 1 つは、言語にとらわれないソリューションを用意することです。
私の問題は、NGRAM が長いテキストではうまく機能するが、短いテキストではパフォーマンスが悪いことです。たとえば、実行時:
ngram.NGram.compare('Pepsi', 'Pespi')
結果は次のようになります。
0.2727272727272727
これは非常に低い「スコア」ですが、ご覧のとおり、文字列は非常に近く、位置が間違っている文字は 1 つだけです。
嫌悪感を改善するにはどうすればよいですか?別のアルゴリズムを使用する必要がありますか? それとも、このテストに別のパラメーターを指定しますか? 私が見つけたすべての「新しい」単語を含む辞書を追加して追加することを考えました。その後、各単語を比較できますが、スクリプトの粒度が失われます。