ホームページ >バックエンド開発 >Python チュートリアル >Pythonを使用してテキストファイルのZIPF配布を見つける方法
zipf分布という用語が何を意味するのか疑問に思うかもしれません。この用語を理解するには、まずZIPF法を定義する必要があります。心配しないでください、私は指示を簡素化しようとします。 zipfの法律
例を見てみましょう。アメリカ英語の茶色のコーパスを見ると、最も頻繁に表示される単語は「」(69,971回)であることに気付くでしょう。頻繁に表示される「of」という単語が36,411回表示されました。
"The"は、茶色のコーパスの語彙の約7%を占めています(100万語以上のうち69,971語)。および「of」はコーパスの約3.6%(「」の約半分)を占めています。したがって、ZIPFの法律がこのケースに適用されることがわかります。
したがって、ZIPFの法律は、通常、私たちが観察するアクティビティのほとんどを占有していることを私たちに伝えようとします。たとえば、いくつかの疾患(がん、心血管疾患)が死亡の大部分を占めています。これは、文学作品の単語の頻度のほとんどを占める言葉や、私たちの生活の他の多くの例にも当てはまります。
データの準備
プログラム構築
のデータのZIPF分布を探すPythonスクリプトの構築を開始しましょう。 最初のステップは、
関数を使用してファイルを読み取ることです。
read()
パターン(つまり、単語)を探しているので、正規表現は役に立ちます。 Pythonの
この正規表現は、基本的に、文字(キャップまたは小文字)から始まるすべての単語を見つけるように指示し、その後に少なくとも2文字以下の文字以下が続きます。つまり、出力に含まれる単語サイズの範囲は3〜10文字です。 b[A-Za-z][a-z]{2,9}b
ここで、ループを実行して各単語の発生の頻度を計算できます。
ここで、単語が単語リストに表示されていない場合、
words = re.findall(r'(\b[A-Za-z][a-z]{2,9}\b)', file_to_string)関数を使用して値をトラバースして、ループエラーをスローする代わりに異なる単語のインデックス位置を追跡できるようにします。
最も頻繁な単語の頻度は、他の単語の頻度で割って比率を計算します。これにより、ZIPFの法則がどれだけうまく順守されているかを確認できます。
すべてのコンテンツを統合します
words = re.findall(r'(\b[A-Za-z][a-z]{2,9}\b)', file_to_string)ここで、プログラムとその頻度で返された最初の10語を表示します:
このZIPF分布から、ZIPFの法則を検証できます。つまり、「The」、「」、「That」、「」などのほとんどの単語を表します。
for word in words: count = frequency.get(word,0) frequency[word] = count + 1
結論
このチュートリアルでは、PythonがZIPFの法則などの統計的概念の処理をどのように単純化するかを確認します。特に大規模なテキストファイルを扱う場合、Pythonは非常に便利で、ZIPF分布を手動で検索すると、多くの時間と労力がかかります。ご覧のとおり、サイズ28 MBのファイルのZIPF分布を迅速にロード、解析、および見つけることができます。また、Pythonの辞書のため、ソート出力も簡単です。この記事は更新され、Monty Shokeenからの貢献が含まれています。 Montyはフルスタック開発者であり、チュートリアルの作成や新しいJavaScriptライブラリの学習も大好きです。
以上がPythonを使用してテキストファイルのZIPF配布を見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。