ホームページ > バックエンド開発 > Python チュートリアル > Pythonを使用してテキストファイルのZIPF配布を見つける方法

Pythonを使用してテキストファイルのZIPF配布を見つける方法

Jennifer Aniston
リリース: 2025-03-05 09:58:11
オリジナル
922 人が閲覧しました

How to Use Python to Find the Zipf Distribution of a Text File

このチュートリアルでは、Pythonを使用してZIPFの法則の統計的概念を処理する方法を示し、法律を処理する際にPythonの大規模なテキストファイルの読み取りと並べ替えの効率を示します。

zipf分布という用語が何を意味するのか疑問に思うかもしれません。この用語を理解するには、まずZIPF法を定義する必要があります。心配しないでください、私は指示を簡素化しようとします。 zipfの法律

Zipfの法則は単に意味します。大きな自然言語のコーパスでは、最も頻繁に発生する単語は、2番目の頻繁な単語のほぼ2倍の頻繁に表示されます。

例を見てみましょう。アメリカ英語の茶色のコーパスを見ると、最も頻繁に表示される単語は「」(69,971回)であることに気付くでしょう。頻繁に表示される「of」という単語が36,411回表示されました。

"The"は、茶色のコーパスの語彙の約7%を占めています(100万語以上のうち69,971語)。および「of」はコーパスの約3.6%(「」の約半分)を占めています。したがって、ZIPFの法律がこのケースに適用されることがわかります。

したがって、ZIPFの法律は、通常、私たちが観察するアクティビティのほとんどを占有していることを私たちに伝えようとします。たとえば、いくつかの疾患(がん、心血管疾患)が死亡の大部分を占めています。これは、文学作品の単語の頻度のほとんどを占める言葉や、私たちの生活の他の多くの例にも当てはまります。

データの準備

続行する前に、このチュートリアルで使用する実験データを紹介します。私たちのデータは、Project GutenbergのWebサイトで入手可能なDracula Textバージョンに由来しています。

プログラム構築

前のセクションからデータをダウンロードした後、

dracula.txt

のデータのZIPF分布を探すPythonスクリプトの構築を開始しましょう。 最初のステップは、

関数を使用してファイルを読み取ることです。

read()パターン(つまり、単語)を探しているので、正規表現は役に立ちます。 Pythonのを使用して、伝統的な意味での単語ではない単語を削除します。たとえば、Robotics_89、40_Pie_40、およびBigMangoと一致しません。 「ビッグマンゴ」は、複数の大文字から始まるため、一致しません。

この正規表現は、基本的に、文字(キャップ​​または小文字)から始まるすべての単語を見つけるように指示し、その後に少なくとも2文字以下の文字以下が続きます。つまり、出力に含まれる単語サイズの範囲は3〜10文字です。 b[A-Za-z][a-z]{2,9}b

Pythonでは、これは次のように表現できます

ここで、ループを実行して各単語の発生の頻度を計算できます。

ここで、単語が単語リストに表示されていない場合、
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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート