1. ホーム
  2. パイソン

[解決済み] ファジー文字列比較のための良いPythonモジュール?[クローズド]。

2022-04-05 11:40:03

質問

<余談
クローズド . この質問は 意見型 . 現在、回答は受け付けておりません。
クローズド 8年前 .
<余談
<パス
ロックされている . この質問とその回答は ロック なぜなら、この質問はトピックから外れているものの、歴史的な意義があるからです。現在、新しい回答や交流は受け付けていません。

簡単なファジー文字列比較を行うことができるPythonモジュールを探しています。 具体的には、文字列がどれだけ似ているかのパーセンテージが欲しいのです。 私はこれが潜在的に主観的であることを知っているので、私は他のものの間で、位置の比較と同様に最も長い類似の文字列のマッチを行うことができるライブラリを見つけることを望んでいました。

基本的に、私は単一のパーセンテージを得るのに十分なほどシンプルでありながら、どのようなタイプの比較を行うかを指定できるほど設定可能なものを見つけたいと考えています。

どのように解決するのですか?

Levenshtein Python 拡張と C ライブラリ。

https://github.com/ztane/python-Levenshtein/

Levenshtein Python C 拡張モジュールは、高速な 計算 - レーベンシュタイン(編集)距離、および編集操作 - 文字列の類似性 - 文字列の中央値近似、および一般的な文字列の平均化 - 文字列の配列と集合の類似性 通常の文字列とUnicode文字列の両方をサポートしています。

$ pip install python-levenshtein
...
$ python
>>> import Levenshtein
>>> help(Levenshtein.ratio)
ratio(...)
    Compute similarity of two strings.

    ratio(string1, string2)

    The similarity is a number between 0 and 1, it's usually equal or
    somewhat higher than difflib.SequenceMatcher.ratio(), becuase it's
    based on real minimal edit distance.

    Examples:
    >>> ratio('Hello world!', 'Holly grail!')
    0.58333333333333337
    >>> ratio('Brian', 'Jesus')
    0.0

>>> help(Levenshtein.distance)
distance(...)
    Compute absolute Levenshtein distance of two strings.

    distance(string1, string2)

    Examples (it's hard to spell Levenshtein correctly):
    >>> distance('Levenshtein', 'Lenvinsten')
    4
    >>> distance('Levenshtein', 'Levensthein')
    2
    >>> distance('Levenshtein', 'Levenshten')
    1
    >>> distance('Levenshtein', 'Levenshtein')
    0