0

私の現在のプログラミング プロジェクトは、Java の一種のフランス語辞書です (sqlite を使用)。誰かが「avoir」の現在時制を見つけたいと思っていたのに「avior」と入力したらどうなるのだろうと思っていました。だから私はある種の最も近い一致を実装できると思った/機能を意味した. だから私の質問は:

データベースを使用して類似の一致を検索する方法はありますか?

しばらく前にPythonで同じプログラムを作成したとき(代わりにxmlを使用)、このシステムを使用しましたが、あまり効果的ではなく、ある程度効果的であるために大きなエラーマージンが必要でした(その後、関連性のない単語を提案しました!)...しかし、似たようなものはまだ有用である可能性があります。

def getSimilar(self, word, Return = False):
    matches = list()
    for verb in self.data.getElementsByTagName("Verb"):
        for x in range(16):
            if x % 2 != 0 and x>0:
                if (x == 15 or x == 3 or x == 1): 
                    part = Dict(self.data).removeBrackets(Dict(self.data).getAccents(verb.childNodes[x].childNodes[0].data)) 
                    diff = 0
                    for char in word:
                        if (not char in part):
                            diff += 1
                    if (diff < self.similarityValue) and (-self.errorAllowance <= len(part) - len(word) <= self.errorAllowance):
                        matches.append(part)
                else:
                    for y in range(14): 
                        if (y % 2 != 0 and y>0):
                            part = Dict(self.data).getAccents(verb.childNodes[x].childNodes[y].childNodes[0].data)
                            diff = 0
                            for char in word:
                                if (not char in part):
                                    diff += 1
                            if (diff < self.similarityValue) and (-self.errorAllowance <= len(part) - len(word) <= self.errorAllowance):
                                matches.append(part)
    if not Return:
        for match in matches:
            print "Did you mean '" + match + "'?"
    if Return: return matches

どんな助けでも大歓迎です!

ジェイミー

4

1 に答える 1

2

https://github.com/mateusza/SQLite-Levenshteinを使用してみて ください

非常にうまく機能します

于 2012-10-13T22:48:55.040 に答える