無料単語頻度カウンター
テキストを分析して、単語の頻度をカウントし、最も頻繁に出現する単語を特定します。テキスト分析、コンテンツ調査、パターン検出に最適です。
単語頻度分析について
単語頻度は、テキスト内で各単語が出現する回数のカウントです。これは、文章の本体に対して実行できる最も単純な統計分析の断片ですが、それでも分野全体の源です。英語における単語頻度の実証研究はGeorge Kingsley Zipfから始まります。彼はハーバード大学の言語学者で、1935年の著書The Psycho-Biology of Languageと1949年の続編Human Behavior and the Principle of Least Effortで、現在Zipfの法則として知られているものを文書化しました: どの単語の頻度も、頻度表におけるその順位にほぼ反比例します。英語で最も一般的な単語(「the」)は、典型的な英語コーパスにおいて、すべての単語トークンの約7%を占めます; 2番目に一般的なもの(「of」)は約3.5%; 3番目は約2.8%です。この関係はほぼすべての自然言語にわたって、そしてほぼすべての種類のテキスト、本、新聞、転写されたスピーチ、コードコメント、ソーシャルメディアにわたって成り立ちます。それは逆についても成り立ちます: ほとんどの単語は、テキストの大きさに関係なく、与えられたテキストで1回または2回しか現れません。Zipfはこれを最小努力の原則に帰しました: 話者は発話コストを最小化し、聴き手は理解コストを最小化し、均衡はべき乗分布です。
頻度分析専用に設計された最初の計算コーパスは、Brown Corpusでした。これはW. Nelson FrancisとHenry KučeraによってBrown Universityでコンパイルされ、1961年に出版されました。15のジャンル(新聞報道、フィクション、宗教的執筆、科学論文、人気の伝承、政府文書など)にわたる500の散文サンプルから1,014,312の単語トークンを含み、各サンプルは2,000単語の長さです。Brown Corpusは実証的な英語言語学の基礎であり、すべての現代英語の単語頻度研究はそれに直接または間接的に基づいています。イギリスの対応物であるLOB Corpus(Lancaster-Oslo/Bergen)は、イギリス英語のための同じ構造で1976年に続きました。今日の産業規模のコーパス(800万冊以上の本からのGoogleのn-gramデータ、140億単語のiWeb Corpus、数千億単語のOSCARのウェブクロールされたコーパス)はすべて、Brownにそのメソドロジーを遡ります。
ストップワード: 概念とリスト
ストップワードフィルタリングなしの頻度分析は、すべての文に現れトピック的な意味をほとんど持たない機能語、冠詞、前置詞、接続詞、助動詞によって支配されます。「ストップワード」という用語は、IBM 704でIBM Researchで書かれた1958年の論文「The Automatic Creation of Literature Abstracts,」でHans Peter Luhnによって造語されました。Luhnはそれらを「ノイズワード」と呼びました、より話題的に有益な内容語を覆い隠すほど一般的な単語です。現代のストップワードリストはまだかなり小さいです。Python NLTKライブラリの英語ストップワードリストは179単語です; spaCyのは約326です。正確なサイズは哲学に依存します: NLTKのリストは保守的(最も普遍的に機能的な単語のみ); spaCyのはより積極的(多くの一般的な動詞と代名詞を含む)です。他の言語には独自のリストが必要であり、リスト自体を構成するのが難しくなります。ドイツ語にはより短い一般的な部分に分解される多くの複合語があります。中国語、日本語、タイ語にはまったく空白の区切り文字がないため、「この単語の頻度は?」と尋ねる前にセグメンテーション、つまり単語境界がどこにあるかを決定する必要があります。これは英語の単純なスペーストークン化よりも深い問題です。このツールのストップワードリストは英語をカバーします; 非英語テキストには、ケース非依存の生頻度出力がストップワードフィルタリング版よりも有用です。
単語として何がカウントされるか、トークン化の問題
単語を数えることは、単語とは正確に何かを指定しようとするまでは単純に聞こえます。「don't」は1単語ですか、それとも2つ(do + n't)ですか?「state-of-the-art」は1単語ですか、それとも4つですか?URLのexample.comは単語ですか?U.S.A.はどうですか、3単語、1単語、またはUSAに正規化されるべき1単語ですか?Penn Treebankのトークン化ルール(Penn Treebankコーパスのためにペンシルベニア大学で開発、1989年〜)は、英語NLPのデファクトスタンダードとなり、短縮形を別々のトークンに分割します(don't → do + n't)。Unicode StandardのUAX #29(Unicode Text Segmentation)は、ほとんどのスクリプトで機能する言語対応の単語境界を定義します。モダンなWebプラットフォームは、これをIntl.Segmenterとして公開し、2024年以来Chrome、Firefox、Safariでベースラインとして利用可能です。文字列とロケールを与え、入力言語の慣例を尊重する単語境界のイテレータを取得します。このツールは正規表現ベースのアプローチ(Unicodeフラグ付きの[\p{L}\p{N}][\p{L}\p{N}_'-]*)を使用し、ほとんどのケースをうまく処理しますが、state-of-the-artを4単語として扱い、巻きタイポグラフィアポストロフィ(Wordがデフォルトで生成するU+2019文字、ストレートASCIIアポストロフィU+0027は正しく動作)に苦労する可能性があります。
ステミングと見出し語化
素朴な頻度カウントはrun、runs、running、ranを4つの異なる単語として扱います。一部の質問にはそれが正しい答えです(本当に表面形を別々にカウントしたい); 他の多くには、それらを単一の概念に折りたたみたい場合があります。ステミングはルールによって接尾辞を切り落とします、有名なMartin PorterのPorter stemmer(1980)は、多段階の接尾辞除去アルゴリズムを介して単語をステムに減らします: running → run、cats → cat、generously → generous。Porterは後にシステムをSnowball(2001)に洗練しました。これは複数の言語にわたるステマーを書くための小さな言語です。ステミングは高速で言語非依存ですが、非単語を生成します(argues、argued、arguingはすべてarguになります)。見出し語化はより洗練された代替案です: 辞書と文法分析を使用して各表面形をその標準的な見出し語にマッピングし、実際の単語を生成します(ran → run、raではない)。見出し語化はより遅く、言語固有の辞書を必要とし、ステミングが間違える不規則なケースを処理します。NLTKとspaCyの両方が見出し語化器を出荷します; このツールはどちらもしません、設計により、表面形での頻度分析は、見出し語化されたバージョンよりも一部のアプリケーション(スタイル分析、語彙の多様性)に有用です。
TF-IDF: なぜ1つのドキュメント内の単語の頻度だけでは不十分なのか
単一ドキュメントの頻度分析は、この特定のテキストでどの単語が最も頻繁に出現するかを教えてくれますが、どの単語がこのテキストに独特かを教えてくれません。Theはすべての英語ドキュメントで最も頻繁に出現するので、あなたのドキュメントでの高頻度は何も教えてくれません。TF-IDF(Term Frequency-Inverse Document Frequency)は古典的なソリューションです: 各用語のドキュメント内の頻度を、その用語がより広いコーパス全体でどれくらい頻繁に現れるかの逆数で重み付けします。どこでも一般的な単語(the、of、and)は小さい重みを得ます; あなたのドキュメントで一般的だが他では稀な単語は大きい重みを得ます。IDFの概念はKaren Spärck Jonesの1972年の論文「A Statistical Interpretation of Term Specificity and Its Application in Retrieval」でJournal of Documentationに導入されました。Jonesは計算言語学と情報検索の基礎的人物の一人であり、検索エンジンへの彼女の貢献(PageRank以降のすべての検索ランキングアルゴリズムはTF-IDFに何かを負っている)は広く過小評価されています。このツールは生の頻度を計算し、TF-IDFではありません、TF-IDFは比較するコーパスを必要とし、任意のユーザー入力に対して単一の正しいコーパスはありません。
N-gramとGoogle Books Ngram Viewer
単一単語頻度は1-gram分析の特別なケースです。バイグラム(2単語シーケンス)とトリグラム(3単語シーケンス)は複数単語のフレーズをキャプチャします。「machine learning」は単一単語頻度分析には決して現れないバイグラムですが、machineとlearningの別々のカウントよりも有益です。公開されている最大のn-gramデータセットはGoogle Books Ngram Viewerで、2010年12月16日に立ち上げられ、約800万冊の本の光学文字認識テキストから構築されました。これはこれまでに出版されたすべての本の約6%です。ビューアでは、英語(およびその他のいくつかの言語)で1500年から現在までの任意の1-、2-、3-、4-、または5-gramの頻度をプロットできます。スラングの興亡の追跡から、日付のない原稿の日付付け、英語の歴史的使用におけるジェンダーバイアスの文書化まで、あらゆることに使用されてきました。現代の言語モデルの前駆体であるマルコフ連鎖テキスト生成は、n-gram統計に基づいて構築されました、前のN単語から次の単語を予測することは、n-gram頻度テーブルが教えてくれるまさにそのものです。このツールは単一の単語を数えます; バイグラムとトリグラム分析は将来の機能リストにあります。
語彙サイズとHeapsの法則
成人ネイティブ英語話者は約20,000から35,000の単語ファミリーを知っています(「単語ファミリー」とは基本単語とその活用形、run、runs、running、ranを1つのファミリーとして)。Brysbaertらの2016年のFrontiers in Psychologyでの研究は、大学教育を受けたアメリカ人成人の中央値を約42,000の基本単語に置きました。Heapsの法則(Heaps 1978; 根底にある観察は1950年代に遡る)は、語彙がコーパスサイズとともにどう成長するかを記述します: V ∝ K · Nβ、ここでVは固有語数(語彙)、Nは総トークン数(コーパスサイズ)、Kは10-100の範囲の定数、βは英語で0.4と0.6の間です。簡単に言えば: テキストが長くなるほど、より多くの新しい単語に出会いますが、各連続する単語が新しい可能性は低くなります。1,000単語のエッセイはおそらく400のユニーク単語を導入します; 10,000単語のエッセイは約1,300のユニーク単語を導入します; 100,000単語の小説は約4,500を導入します。関係は線形以下ですが、限界はありません、自然言語に理論的な「語彙キャップ」はありません。コンテンツライターの経験則: 典型的な1,500単語のブログ投稿には約500-600のユニーク単語が含まれ、最頻出のトップ20(主にストップワード)が全出現の約半分をカバーします。
単語頻度分析が実際に有用なとき
- SEO最適化: Webコンテンツのキーワード分布と密度を分析
- 執筆スタイル: 特定の単語の過剰使用を発見し、語彙を充実
- スタイロメトリーと著者帰属。 元の定量的研究は、異なる著者の作品における単語長分布に関するThomas Mendenhallの1887年の論文でした。最も有名な現代の応用は、1964年のMostellerとWallaceによる論争中のFederalist Papersの分析で、ベイジアン単語頻度分析を使用して、論争中の12の論文がAlexander Hamiltonではなく、James Madisonによってほぼ確実に書かれたことを決定しました。この技術はその後、シェイクスピアのコラボレーションの帰属、ゴーストライティングされた政治演説の特定、匿名のオンライン著者の正体を暴くために使用されました。
- 言語学習。 頻度ベースの語彙リストは、最初に学ぶべき単語を教えてくれます。どんな主要言語でもトップ1,000単語をマスターすると、走るテキストの約80%の理解力が得られます; トップ3,000は~95%に達します。New General Service Lists、COCAリスト、その他のコーパス由来の単語リストはこの原則に基づいて構築されています。
- コンテンツ研究: ドキュメントまたはコーパス内で最も一般的なトピックとテーマを特定
- 剽窃と類似性検出。 単語頻度ベクトルは、多くの類似性検出ツールの根底にある表現です、Jaccard距離、単語頻度ベクトル上のコサイン類似度、TF-IDF重み付きバリアントは、テキスト類似性スコアリングのパンとバターです。
- 下流のNLPのためのストップワード識別。 ドメイン固有の検索システムを構築している場合、ドメインに固有の高頻度単語(標準ストップワードリストにはない)は、カスタムストップワードリストに追加する良い候補です。
このツールがあなたのブラウザでどう動くか
実装は単純です。テキストはUnicode対応の正規表現([\p{L}\p{N}][\p{L}\p{N}_'-]*/gu)を通して実行され、文字と数字のシーケンスを単語としてマッチします; マッチはケース非依存オプションがオンの場合に小文字に正規化されます; 各単語はJavaScriptのMapでインクリメントされます; エントリは降順カウントで並べ替えられ、グラフとテーブルとしてレンダリングされます。100,000単語のドキュメントでの合計時間は、典型的なラップトップで1秒未満です。Mapはここで正しいデータ構造です、挿入順序を保持し、O(1)のルックアップと更新があり、エクスポートのために2D配列にきれいにシリアライズされます。より洗練された実装では、自明でない単語境界を持つ言語、特にCJKに対してIntl.Segmenter(Unicode対応セグメンテーションAPI、2024年4月以降のベースライン)を使用します; 正規表現アプローチはヨーロッパ言語ではうまく機能し、空白語区切りのない中国語、日本語、タイ語では破綻します。
プライバシー: なぜブラウザのみがここで重要なのか
未発表の執筆物の下書き、ブログ投稿、内部メモ、クライアント納品物、原稿の章、進行中の学術論文は、まさに第三者サービスへのアップロードが望ましくないテキストです。サーバーサイドの単語頻度ツールは、テキスト全体をリモートエンドポイントに送信する必要があり、それはサーバーのログ、おそらくCDNキャッシュ、おそらく分析パイプライン、おそらくバックアップに残ることを意味します。公開されたテキストの場合、問題は無意味です。下書き作業、NDA下のクライアントコピー、またはまだチーム外の誰にも見せたくない原稿の場合、アーキテクチャは重要です。このツールはJavaScriptを介してブラウザ内でパイプライン全体を実行します。テキストは決してネットワークを越えません、Analyzeをクリックする間にDevToolsのネットワークタブで検証するか、ロード後にページをオフラインに(機内モードに)して分析がまだ機能することを確認してください。機密の下書き、クライアント納品物、見知らぬ人のハードドライブにコピーされたくないテキストに安全です。
よくある質問
ストップワードとは?
ストップワードは「the」、「is」、「and」、「or」などの一般的な単語で、ほとんどのテキストに頻繁に表示されますが、意味はほとんどありません。それらをフィルタリングすると、分析がより意味のある単語に集中します。
パーセンテージはどのように計算されますか?
パーセンテージは次のように計算されます:(単語の出現回数 ÷ 合計単語数)× 100。例えば、合計100単語のテキストで単語が5回出現する場合、その頻度は5%です。
このカウンターはフレーズ(n-gram)を処理しますか?
現在は単一単語のみです。バイグラム(「machine learning」のような2単語シーケンス)、トリグラム、より長いn-gramは将来の機能リストにあります。Google Books Ngram Viewer(2010年12月16日に立ち上げられた)は、スケールでのn-gram分析の公開リファレンスです; 個人テキストの場合、NLTKとspaCyは数行のPythonでn-gram抽出を出荷します。
非常に長いテキストを分析できますか?
はい、このツールは完全にブラウザ内で実行され、数MBのテキストを処理できます。ただし、非常に大きなテキストは処理に数秒かかる場合があります。データがデバイスを離れることはありません。
非英語テキストで機能しますか?
部分的に。Unicode対応の正規表現は、ラテン、キリル、ギリシャ、ヘブライ、アラビア文字の言語の単語文字を正しく識別します。空白語区切りのない中国語、日本語、タイ語の場合、文字ごとの生頻度は機能しますが、言語学的意味で本当の「単語頻度」ではありません、最初に単語セグメンテーションが必要です(中国語にはjieba、日本語にはMeCab、ブラウザサイドサポートにはICUのIntl.Segmenter)。ストップワードフィルターは英語のみです。
私のテキストはアップロードされますか?
いいえ。分析はJavaScriptを介してブラウザで完全に実行されます。貼り付けたテキストはネットワークを越えることはありません、Analyzeをクリックする間にDevToolsのネットワークタブで検証するか、ロード後にページをオフラインに(機内モードに)してもツールはまだ機能します。機密の下書き、クライアント納品物、NDA下の原稿の章、内部メモ、または見知らぬ人のハードドライブにコピーされたくないものに安全です。