PYNLPLライブラリを使用したテキスト統計分析
導入
テキストの統計分析は、テキストの前処理の重要なステップの1つです。テキストデータを深く数学的な方法で理解するのに役立ちます。このタイプの分析は、隠されたパターンを理解し、文の特定の単語の重みを理解するのに役立ち、全体的には良い言語モデルの構築に役立ちます。 Pynlplまたは私たちがPineappleライブラリと呼ぶとき、テキスト統計分析に最適なPythonライブラリの1つです。このライブラリは、テキストのクリーニングや分析などの他のタスクにも役立ちます。また、テキストの前処理関数、N-Gram抽出器などを提供します。さらに、PYNLPLを使用して、単純な言語モデルを構築できます。
このブログでは、Pynlplを使用してテキスト分析を実行する方法を理解できます。まず、このライブラリをシステムにインストールするすべての方法を理解します。次に、Pynlplライブラリを使用して、共起マトリックスという用語とその実装を理解します。その後、最も繰り返される単語を識別するための周波数リストを作成する方法を学びます。次に、テキスト配布分析を実行して、2つのテキストドキュメントまたは文字列の類似性を測定します。最後に、このライブラリを使用してLeveshteinの距離を理解して計算します。自分でフォローしてコーディングするか、このリンクの[コピー&編集]ボタンをクリックして、すべてのプログラムを実行することもできます。
学習目標
- 利用可能なすべての方法を使用して、このライブラリを詳細にインストールする方法を理解してください。
- 単語の関係を分析するために、用語共起マトリックスを作成する方法を学びます。
- 周波数リストの生成やLevenshtein距離の計算などの一般的なタスクを実行することを学びます。
- テキスト配布分析の実施やドキュメントの類似性の測定など、高度なタスクを実行することを学びます。
この記事は、データサイエンスブログソンの一部として公開されました。
目次
- pynlplをインストールする方法は?
- テキスト分析にPYNLPLを使用する方法は?
- 用語共起マトリックス
- 周波数リスト
- テキスト分布分析
- levenshtein距離
- ドキュメントの類似性の測定
- よくある質問
pynlplをインストールする方法は?
このライブラリは2つの方法でインストールできます。最初にPypiを使用し、2番目はGitHubを使用します。
Pypi経由
Pypiを使用してインストールするには、端末に以下のコマンドを貼り付けます。
PIPインストールpynlpl
Jupyter Notebook、Kaggle Notebook、Google Colabなどのノートブックを使用している場合は、「!」を追加してください。上記のコマンドの前。
Github経由
GitHubを使用してこのライブラリをインストールするには、以下のコマンドを使用して公式のPynlplリポジトリをシステムにクローンします。
git clone https://github.com/proycon/pynlpl.git
次に、「CD」を使用して端末のディレクトリをこのフォルダーに変更し、次のコマンドを貼り付けてライブラリをインストールします。
python3 setup.pyインストール
テキスト分析にPYNLPLを使用する方法は?
次に、テキスト分析にPYNLPLを使用する方法について調べてみましょう。
用語共起マトリックス
用語共起マトリックス(TCM)は、単語がテキスト内の別の特定の単語と共生する頻度を識別する統計的方法です。このマトリックスは、単語の関係を理解し、有用な隠されたパターンを明らかにするのに役立ちます。これは、簡潔な要約を生成するのに役立つ単語間の関係を提供するため、テキストの要約を作成する際に一般的に使用されます。それでは、Pynlplライブラリを使用してこのマトリックスを構築する方法を見てみましょう。
まず、Pynlpl.StatisticsからFrequencyList関数をインポートします。これは、テキストで単語が繰り返された回数を数えるために使用されます。これについては、後のセクションで詳しく説明します。さらに、コレクションモジュールからdefaultdictメソッドをインポートします。次に、Text入力とウィンドウサイズを取得し、マトリックスを返すcreate_cooccurrence_matrixという名前の関数を作成します。この関数では、最初にテキストを個々の単語に分割し、defaultDictを使用して共起マトリックスを作成します。テキスト内のすべての単語について、指定されたウィンドウサイズ内のコンテキストワードを特定し、共起マトリックスを更新します。最後に、マトリックスを印刷し、各用語の頻度を表示します。
Pynlpl.Statisticsからfree彼らのインポートから コレクションからImport defaultdictから def create_cooccurrence_matrix(text、window_size = 2): words = text.split() cooccurrence_matrix = defaultdict(freookeList) 私の場合、単語の列挙(単語): start = max(i -window_size、0) end = min(i window_size 1、len(words)) context = words [start:i] words [i 1:end] コンテキストのContext_Wordの場合: coccurrence_matrix [word.lower()]。count(context_word.lower())) COOCCURRENCE_MATRIXを返します Text = "こんにちはこれは分析vidhyaであり、これまでのところデータサイエンスのトピックを探求しています。分析Vidhyaは、データサイエンスと機械学習を学ぶための素晴らしいプラットフォームです。」 #用語共起マトリックスの作成 cooccurrence_matrix = create_cooccurrence_matrix(テキスト) #協同組合マトリックスという用語の印刷 print( "Term Co-ccurrence Matrix:") 用語の場合、COOCCURRENCE_MATRIX.ITEMS()のContext_FREQ_LIST: print(f "{Term}:{dict(context_freq_list)}")
出力:
周波数リスト
周波数リストには、特定の単語がドキュメントまたは段落で繰り返された回数が含まれます。これは、ドキュメント全体の主なテーマとコンテキストを理解するための有用な機能です。通常、言語学、情報検索、テキストマイニングなどのフィールドで周波数リストを使用します。たとえば、検索エンジンは周波数リストを使用してWebページをランク付けします。また、これをマーケティング戦略として使用して、製品のレビューを分析し、製品の主要な一般的な感情を理解することもできます。
次に、PYNLPLライブラリを使用してこの周波数リストを作成する方法を見てみましょう。まず、Pynlpl.StatisticsからFrequencyList関数をインポートします。次に、サンプルテキストを変数に持ち込み、テキスト全体を個々の単語に分割します。次に、この「単語」変数をFrequencyList関数に渡します。最後に、頻度リストのアイテムを繰り返し、各単語とそれに対応する頻度を印刷します。
Pynlpl.Statisticsからfree彼らのインポートから Text = "こんにちはこれは分析vidhyaであり、これまでのところデータサイエンスのトピックを探求しています。分析Vidhyaは、データサイエンスと機械学習を学ぶための素晴らしいプラットフォームです。」 words = text.lower()。split() freq_list = frequencylist(words) 言葉として、freq_list.items()のfreq: print(f "{word}:{freq}")
出力:
テキスト分布分析
テキスト分布分析では、文の単語の頻度と確率分布を計算して、どの単語が文のコンテキストを構成するかを理解します。この単語頻度の分布を計算することにより、エントロピー、困惑、モード、最大エントロピーなどの最も一般的な単語とその統計的特性を識別できます。これらのプロパティを1つずつ理解しましょう。
- エントロピー:エントロピーは、分布のランダム性の尺度です。テキストデータに関しては、より高いエントロピーは、テキストの語彙の幅が広く、単語の繰り返しがあまりないことを意味します。
- 困惑:困惑は、言語モデルがサンプルデータでどれだけうまく予測するかを測定することです。困惑が低い場合、テキストは予測可能なパターンに従います。
- モード:私たち全員が子供の頃からこの用語を学んだように、それは私たちにテキストで最も繰り返される言葉を教えてくれます。
- 最大エントロピー:このプロパティは、テキストが持つことができる最大エントロピーを教えてくれます。つまり、分布の実際のエントロピーを比較するための参照ポイントを提供します。
また、特定の単語の情報コンテンツを計算することもできます。つまり、単語で提供される情報の量を計算できます。
pynlplを使用して実装します
次に、pynlplを使用してこれらすべてを実装する方法を見てみましょう。
Pynlpl.StatisticsモジュールとMATHモジュールから、分布と頻度リスト機能をインポートします。次に、サンプルテキストを作成し、そのテキスト内の各単語の頻度をカウントします。これを行うには、上記と同じ手順に従います。次に、周波数リストを渡すことにより、分布関数のオブジェクトを作成します。次に、分布変数のアイテムをループすることにより、各単語の分布を表示します。エントロピーを計算するには、分布()関数を呼び出します。
困惑を計算するには、distribution.perplexity()を呼び出します。モードの場合、distribution.mode()を呼び出します。最大エントロピーを計算するには、分布を呼び出します。maxentropy()。最後に、特定の単語の情報コンテンツを取得するために、distribution.information(word)を呼び出します。以下の例では、この関数のパラメーターとしてモードワードを渡します。
数学をインポートします Pynlpl.Statisticsのインポート分布、頻度リストから Text = "こんにちはこれは分析vidhyaであり、これまでのところデータサイエンスのトピックを探求しています。分析Vidhyaは、データサイエンスと機械学習を学ぶための素晴らしいプラットフォームです。」 #単語周波数のカウント words = text.lower()。split() freq_list = frequencylist(words) word_counts = dict(freq_list.items()) #単語周波数から分布オブジェクトを作成します 配布=配布(word_counts) #分布の表示 print( "Distribution:") Wordの場合、distribution.items()のprob: print(f "{word}:{prob:.4f}") #さまざまな統計 print( "\ nstatistics:") print(f "entropy:{distribution.entropy():。4f}") print(f "Perplexity:{distribution.perplexity():。4f}") print(f "mode:{distribution.mode()}") print(f "max entropy:{distribution.maxentropy():。4f}") #「モード」ワードの情報コンテンツ word = distribution.mode() information_content = distribution.information(word) 印刷(f "{word} 'の情報コンテンツ:{information_content:.4f}")
出力:
levenshtein距離
Levenshtein距離は、2つの単語の違いの尺度です。 2つの単語が同じようになるには、単一のキャラクターの変更がいくつ必要かを計算します。単語の文字の挿入、削除、または置換に基づいて計算されます。この距離メトリックは通常、スペル、DNAシーケンス分析、次のセクションで実装するテキストの類似性などの自然言語処理タスクのチェックに使用され、盗作検出器の構築に使用できます。 Levenshteinの距離を計算することで、2つの単語間の関係を理解できます。2つの単語が似ているかどうかを知ることができます。 Levenshteinの距離が非常に少ない場合、それらの単語が同じ意味や文脈を持つ可能性があり、それが非常に高い場合、それは完全に異なる単語であることを意味します。
この距離を計算するために、最初にPynlpl.StatisticsモジュールからLevenshtein関数をインポートします。次に、「分析」と「分析」という2つの単語を定義します。次に、これらの単語をLevenshtein関数に渡し、距離値を返します。出力でわかるように、これら2つの単語間のレベルシュタイン距離は2です。つまり、「分析」を「分析」に変換するには2つのシングルキャラクター編集のみが必要です。最初の編集は、「分析」の「 s 」で文字「 t 」を置き換えることであり、2番目の編集は、「分析」のインデックス8で文字「 C 」を削除することです。
Pynlpl.StatisticsからLevenshteinのインポートから word1 = "Analytics" word2 = "分析" 距離= levenshtein(word1、word2) 印刷(f "{word1} 'と' {word2} 'の間のlevenshtein距離:{距離}")
出力:
ドキュメントの類似性の測定
多くのアプリケーションでは、2つのドキュメントまたは文がどれほど類似しているかを測定することが役立ちます。これにより、2つのドキュメントがどれほど密接に関連しているかを理解できます。この手法は、盗作チェッカー、コード差チェッカーなど、多くのアプリケーションで使用されます。 2つのドキュメントがどれほど類似しているかを分析することにより、重複したドキュメントを識別できます。これは、ユーザーAに表示される検索結果が同じクエリを入力したユーザーBに表示できるようにすることもできます。
これを実装するために、コサインの類似性メトリックを使用します。まず、PYNLPLライブラリからの頻度リストとMathモジュールからのSQRTの2つの関数をインポートします。次に、2つの変数に2つの文字列を追加します。文字列だけの代わりに、2つのテキストドキュメントも開くことができます。次に、これらの文字列の周波数リストを作成して、以前にインポートしたFrequencyList関数に渡すことで作成します。次に、COSINE_SIMILARITYという名前の関数を書き込み、これらの2つの周波数リストを入力として渡します。この関数では、最初に周波数リストからベクトルを作成し、次にこれらのベクトル間の角度のコサインを計算し、それらの類似性の尺度を提供します。最後に、関数を呼び出して結果を印刷します。
Pynlpl.Statisticsからfree彼らのインポートから Math Import Sqrtから doc1 = "Analytics vidhyaは、データサイエンスと機械学習に関する貴重な洞察とチュートリアルを提供します。」 doc2 = "データサイエンスと機械学習に関するチュートリアルが必要な場合は、分析Vidhyaをチェックしてください。」 #両方のドキュメントのFrequencyListオブジェクトを作成します freq_list1 = frequencylist(doc1.lower()。split()) freq_list2 = frequencylist(doc2.lower()。split()) defosine_similarity(freq_list1、freq_list2): vec1 = {word:freq_list1 [word] for word、_ in freq_list1} vec2 = {word:freq_list2 [word] for word、_ in freq_list2} 交差= set(vec1.keys())&set(vec2.keys()) nulerator = sum(vec1 [word] * vec2 [word]交差点の単語のためのvec2 [word]) sum1 = sum(vec1 [word] ** 2 for vec1.keys()) sum2 = sum(vec2 [word] ** 2 for vec2.keys()) 分母= sqrt(sum1) * sqrt(sum2) 分母ではない場合: 0.0を返します Return Float(分子) /分母 #calculatinngコサインの類似性 類似性= cosine_similarity(freq_list1、freq_list2) print(f "cosineの類似性:{類似性:.4f}")
出力:
結論
Pynlplは、テキスト統計分析を実行できる強力なライブラリです。テキスト分析だけでなく、このライブラリを使用して、トークン化、ステム、Nグラム抽出、さらにはいくつかの単純な言語モデルの構築などのテキストの前処理技術にも使用できます。このブログでは、まずこのライブラリをインストールするすべての方法を理解し、次にこのライブラリを使用して、共起マトリックスという用語を実装し、一般的な単語を識別し、テキスト分布分析を実行し、レベンシュテイン距離を計算する方法を理解し、文書の類似性を計算する方法を理解するなど、さまざまなタスクを実行しました。これらの各手法は、テキストデータから貴重な洞察を抽出するために使用でき、貴重なライブラリになります。次回テキスト分析を行うときは、Pynlpl(Pineapple)ライブラリを試すことを検討してください。
キーテイクアウト
- Pynlpl(Pineapple)ライブラリは、テキスト統計分析に最適なライブラリの1つです。
- 同時共産マトリックスという用語は、単語間の関係を理解するのに役立ち、概要を構築するのに役立ちます。
- 周波数リストは、テキストまたはドキュメントの主なテーマを理解するのに役立ちます。
- テキスト分布分析とlevenshtein距離は、テキストの類似性を理解するのに役立ちます。
- また、テキスト統計分析だけでなく、テキストの前処理にPYNLPLライブラリを使用することもできます。
よくある質問
Q1。 pynlplとは何ですか?Pineappleとしても知られるA. Pynlplは、テキスト統計分析とテキストの前処理に使用されるPythonライブラリです。
Q2。ドキュメントの類似性を測定することの利点は何ですか?A.この手法により、盗作チェッカー、コード差チェッカーなどで2つのドキュメントまたはテキストがどれほど類似しているかを測定できます。
Q3。共起マトリックスという用語は何に使用されていますか?A.共起マトリックスという用語を使用して、ドキュメント内の2つの単語を共同頻繁に識別することができます。
Q4。 Levenshtein距離はどのように役立ちますか?A. levenshtein距離を使用して、2つの単語の違いを見つけることができます。これは、スペルチェッカーの構築に役立ちます。
この記事に示されているメディアは、Analytics Vidhyaが所有しておらず、著者の裁量で使用されています。
以上がPYNLPLライブラリを使用したテキスト統計分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この記事では、トップAIアートジェネレーターをレビューし、その機能、創造的なプロジェクトへの適合性、価値について説明します。 Midjourneyを専門家にとって最高の価値として強調し、高品質でカスタマイズ可能なアートにDall-E 2を推奨しています。

メタのラマ3.2:マルチモーダルとモバイルAIの前進 メタは最近、ラマ3.2を発表しました。これは、モバイルデバイス向けに最適化された強力なビジョン機能と軽量テキストモデルを特徴とするAIの大幅な進歩です。 成功に基づいてo

この記事では、ChatGpt、Gemini、ClaudeなどのトップAIチャットボットを比較し、自然言語の処理と信頼性における独自の機能、カスタマイズオプション、パフォーマンスに焦点を当てています。

CHATGPT 4は現在利用可能で広く使用されており、CHATGPT 3.5のような前任者と比較して、コンテキストを理解し、一貫した応答を生成することに大幅な改善を示しています。将来の開発には、よりパーソナライズされたインターが含まれる場合があります

この記事では、Grammarly、Jasper、Copy.ai、Writesonic、RytrなどのトップAIライティングアシスタントについて説明し、コンテンツ作成のためのユニークな機能に焦点を当てています。 JasperがSEOの最適化に優れているのに対し、AIツールはトーンの維持に役立つと主張します

2024年は、コンテンツ生成にLLMSを使用することから、内部の仕組みを理解することへの移行を目撃しました。 この調査は、AIエージェントの発見につながりました。これは、最小限の人間の介入でタスクと決定を処理する自律システムを処理しました。 buildin

Shopify CEOのTobiLütkeの最近のメモは、AIの能力がすべての従業員にとって基本的な期待であると大胆に宣言し、会社内の重大な文化的変化を示しています。 これはつかの間の傾向ではありません。これは、pに統合された新しい運用パラダイムです

この記事では、Google Cloud、Amazon Polly、Microsoft Azure、IBM Watson、DecriptなどのトップAI音声ジェネレーターをレビューし、機能、音声品質、さまざまなニーズへの適合性に焦点を当てています。
