この記事は、Lemony Hug によるHuawei Cloud Community「Python Text Statistics and Analysis from Basics to Advanced 」から共有されたものです。
今日のデジタル時代では、テキスト データがあらゆる場所に存在し、ソーシャル メディアの投稿からニュース記事、学術論文に至るまで、豊富な情報が含まれています。統計分析は、これらのテキスト データを処理するための一般的な要件です。Python は強力で習得が簡単なプログラミング言語として、テキスト データの統計分析を実装するための豊富なツールとライブラリを提供します。この記事では、Python を使用して、単語頻度統計、語彙統計、テキスト感情分析などのテキスト英語統計を実装する方法を紹介します。
単語頻度統計
単語の頻度カウントは、テキスト分析における最も基本的なタスクの 1 つです。 Python で単語頻度統計を実装するにはさまざまな方法があります。以下は基本的な方法の 1 つです。
def count_words(text): # テキストから句読点を削除し、小文字の テキストに変換します = text. lower() for char in '!"#$%&\'()*+,-./:;<=> ? @[\\]^_`{|}~': text = text.replace(char, ' ') # テキストを単語のリストに分割します Words = text.split() # 単語を保存する空の辞書を作成しますcount word_count = {} # 各単語をトラバースし、 単語内の単語の 辞書内のカウントを更新します: if word in word_count: word_count[word] += 1 else: word_count[word] = 1 return word_count #テスト コード if __name__ == " __main__": text = "これはサンプル テキストです。このテキストを使用して各単語の出現をカウントします。" word_count = count_words(text) for word, count in word_count.items(): print(f"{word } : {カウント}")
このコードは、テキスト文字列をパラメータとして受け取り、テキスト内の各単語とその出現回数を含む辞書を返す関数を定義します。コードの行ごとの分析は次のとおりです。 count_words(text)
def count_words(text):
:処理されるテキスト文字列を1 つのパラメータとして受け入れる関数を定義します。 count_words
text
text = text.lower()
: テキスト文字列を小文字に変換します。これにより、単語の統計が大文字と小文字を区別しなくなります。
for char in '!"#$%&\'()*+,-./:;<=>?@[\\]^_
{|}~':`: これは、テキスト内のすべての句読点を走査するループです。
text = text.replace(char, ' ')
: テキスト内のすべての句読点をスペースに置き換え、テキストから句読点を削除します。
words = text.split()
: 処理されたテキスト文字列をスペースで単語リストに分割します。
word_count = {}
: 単語数を保存する空の辞書を作成します。キーは単語、値はテキスト内でその単語が出現する回数です。
for word in words:
: 単語リスト内の各単語を繰り返し処理します。
if word in word_count:
: 現在の単語が辞書に既に存在するかどうかを確認します。
word_count[word] += 1
: 単語が辞書にすでに存在する場合は、出現回数に 1 を加えます。
else:
: 単語が辞書にない場合は、次のコードを実行します。
word_count[word] = 1
: 新しい単語を辞書に追加し、その単語の出現数を 1 に設定します。
return word_count
: 単語数を含む辞書を返します。
if __name__ == "__main__":
: スクリプトがメインプログラムとして実行されているかどうかを確認してください。
text = "This is a sample text. We will use this text to count the occurrences of each word."
: テストテキストを定義します。
word_count = count_words(text)
:関数を呼び出し、テスト テキストをパラメータとして渡し、結果を変数に保存します。 count_words
word_count
for word, count in word_count.items():
:ディクショナリ内の各キーと値のペアを繰り返し処理します。 word_count
print(f"{word}: {count}")
:各単語とその出現数を出力します。
実行結果は以下の通りです
さらなる最適化と拡張
import re from collections import Counter def count_words(text): # 正規表現を使用してテキストを単語のリスト (ハイフンでつながれた単語を含む) に分割します words = re.findall(r'\b\w+(?:-\w+)* \ b', text. lower()) # Counter を使用して単語の出現数をすばやくカウントします word_count = Counter(words) return word_count # テスト コード if __name__ == "__main__": text = "これはサンプル テキストです。このテキストを使用して各単語の出現をカウントします。" word_count = count_words(text) for word, count in word_count.items(): print(f"{word}: {count}")
このコードは、次の点で前の例と異なります。
- 正規表現は、テキストを単語のリストに分割するために使用されます。この正規表現は、ハイフンでつながれた単語 (「ハイテク」など) を含む単語と一致します。
re.findall()
\b\w+(?:-\w+)*\b
- Python 標準ライブラリのクラスは単語カウントに使用されるため、より効率的でコードがきれいになります。
Counter
この実装はより高度で堅牢であり、ハイフンでつながれた単語などのより特殊なケースを処理します。
実行結果は以下の通りです
テキストの前処理
通常、テキスト分析の前に、句読点の削除、大文字と小文字の処理、見出し語化、ステミングなどのテキストの前処理が必要です。これにより、テキスト データをより標準化して正確にすることができます。
より高度なモデルを使用する
基本的な統計手法に加えて、テキスト分類、固有表現認識、センチメント分析などのテキスト分析に機械学習および深層学習モデルを使用することもできます。 Python には、Scikit-learn や TensorFlow など、これらのモデルの構築とトレーニングに役立つ強力な機械学習ライブラリが多数あります。
大規模なデータを扱う
大規模なテキスト データに直面した場合、処理効率を向上させ、コンピューティング コストを削減するために、並列処理や分散コンピューティングなどのテクノロジを考慮する必要がある場合があります。 Python には、Dask や Apache Spark など、これらの機能の実現に役立つライブラリやフレームワークがいくつかあります。
他のデータソースと組み合わせる
テキストデータだけでなく、画像データ、時系列データ、地理空間データなどのデータソースを組み合わせて、より包括的かつ多次元の分析を行うこともできます。 Python には、このデータの処理と分析に役立つデータ処理および視覚化ツールが多数あります。
要約する
この記事では、Python を使用して、単語頻度統計、語彙統計、テキスト感情分析などのテキスト英語統計を実装する方法を詳しく紹介します。要約は次のとおりです。
単語頻度統計:
- Python 関数を通じて
count_words(text)
テキストが処理され、単語の出現頻度がカウントされます。 - テキストの前処理には、テキストの小文字への変換、句読点の削除などが含まれます。
- ループを使用してテキスト内の単語を反復処理し、辞書を使用して単語とその出現箇所を保存します。
さらなる最適化と拡張:
- 正規表現と
Counter
クラスを導入して、コードをより効率的かつ堅牢にします。 - 正規表現を使用して、ハイフンでつながれた単語の処理を含め、テキストを単語のリストに分割します。
- 単語カウントにクラスを使用すると
Counter
、コードが簡素化されます。
テキストの前処理:
テキストの前処理は、テキスト データを正規化するための句読点の削除、大文字と小文字の処理、見出し語化、ステミングなどを含むテキスト分析の重要なステップです。
より高度なモデルを使用します。
テキスト分類、固有表現認識、センチメント分析などのテキスト分析に機械学習および深層学習モデルを使用する可能性について紹介します。
大規模なデータを処理する:
効率を向上させコストを削減するための並列処理や分散コンピューティングなど、大規模なテキスト データを処理する際の技術的考慮事項についても言及されています。
他のデータソースと組み合わせる:
画像データ、時系列データ、地理空間データなどの他のデータ ソースを組み合わせて、より包括的かつ多次元の分析を行う可能性が検討されています。
要約:
このホワイトペーパーで紹介されている内容は、将来の研究の見通しとともに強調されており、より複雑で多様なテキストデータ分析タスクに適応するためのさらなる研究と探索を奨励しています。
この記事を学習することで、読者はテキスト英語統計に Python を使用する基本的な方法を習得し、より複雑なテキスト分析タスクに対処するためにこれらのメソッドをさらに最適化および拡張する方法を理解できます。