ホームページ >バックエンド開発 >Python チュートリアル >スペースのないテキストを単語のリストに分割するにはどうすればよいでしょうか?

スペースのないテキストを単語のリストに分割するにはどうすればよいでしょうか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-04 12:35:02643ブラウズ

How Can We Split Text Without Spaces Into a List of Words?

スペースのないテキストを単語のリストに分割する

はじめに

この記事では、スペースのないテキスト文字列を単語のリストに効率的に分割する複雑さを掘り下げます。意味のある単語のリスト。私たちは、現実世界のデータに対して正確な結果を得るために単語の頻度を活用するアルゴリズムを検討します。

アルゴリズム

このアルゴリズムは、Zipf の法則に従い、単語が独立して分布しているという仮定の下で動作します。これは、辞書内でランク「n」の単語が出現する確率は約 1/(n log N) であることを意味します。ここで、N は辞書内の単語の総数を表します。

スペースでは動的プログラミングを採用しています。単語確率の逆数の対数を利用するコスト関数を定義します。最適な文は、個々の単語コストの積を最大化します。これは、動的プログラミングを使用して効率的に計算できます。

実装

次の Python コードは、アルゴリズムを実装します。

<code class="python">import math

words = open("words-by-frequency.txt").read().split()
wordcost = dict((k, log((i+1)*log(len(words)))) for i,k in enumerate(words))
maxword = max(len(x) for x in words)

def infer_spaces(s):
    cost = [0]
    for i in range(1,len(s)+1):
        c,k = best_match(i)
        cost.append(c)

    out = []
    i = len(s)
    while i>0:
        c,k = best_match(i)
        out.append(s[i-k:i])
        i -= k

    return " ".join(reversed(out))</code>

デモ

提供されたコードを使用して、テキスト文字列をスペースなしで分割し、意味のある文字列を取得できますWords:

s = 'thumbgreenappleactiveassignmentweeklymetaphor'
print(infer_spaces(s))

結果

アルゴリズムはスペースの位置を効果的に推測し、短いテキスト文字列と長いテキスト文字列の両方に対して正確な単語認識を実現します。明示的な区切り文字がない場合でも、出力は高レベルの一貫性と可読性を維持します。

利点

アルゴリズムにはいくつかの利点があります。

  • 正確な単語認識、スペースがない場合でも
  • 時間と記憶の効率化消費
  • 大規模なテキスト データセットの実装の容易さとスケーラビリティ

以上がスペースのないテキストを単語のリストに分割するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。