C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で文字列内の文字・単語の出現頻度を調べる方法

C#で文字列内の文字・単語の出現頻度を調べる方法

文字列の中に各文字が何回出現するか(出現頻度)を調べたい場合、整数型の配列をカウンタとして使う方法がシンプルで効率的です。以下のサンプルコードを実行してみてください。

サンプルコード

using System;
class Demo {
   static int maxCHARS = 256;
   static void calculate(String s, int[] cal) {
      for (int i = 0; i < s.Length; i++)
      cal[s[i]]++;
   }

   public static void Main() {
      String s = "Football!";
      int []cal = new int[maxCHARS];
      calculate(s, cal);
      for (int i = 0; i < maxCHARS; i++)
      if(cal[i] > 1) {
         Console.WriteLine("Character "+(char)i);
         Console.WriteLine("Occurrence = " + cal[i] + " times");
      }
   }
}

実行結果

Character l
Occurrence = 2 times
Character o
Occurrence = 2 times

コードの解説

まず、対象となる文字列と、各文字の出現回数を記録するための整数型配列を用意します。この配列はカウンタとして機能し、重複している文字を特定する際に役立ちます。

文字の出現回数を数えるメソッドは以下の通りです。

static void calculate(String s, int[] cal) {
   for (int i = 0; i < s.Length; i++)
   cal[s[i]]++;
}

文字列を先頭から1文字ずつ走査し、その文字の文字コードをインデックスとして対応する配列の要素を1ずつ増やしていきます。これにより、すべての文字の出現回数が配列に記録されます。

その後、出現回数が2回以上の文字(重複要素)だけを抽出して表示します。

for (int i = 0; i < maxCHARS; i++)
if(cal[i] > 1) {
   Console.WriteLine("Character "+(char)i);
   Console.WriteLine("Occurrence = " + cal[i] + " times");
}

この例では「Football!」という文字列の中で、文字「l」と「o」がそれぞれ2回出現していることがわかります。

単語ごとの頻度を調べたい場合

文字ではなく「単語」単位で出現頻度を集計したい場合は、Dictionary<string, int> を使うと便利です。文字列を Split メソッドで分割し、キーに単語、値に出現回数を記録していきます。

using System;
using System.Collections.Generic;

class Demo {
   public static void Main() {
      string s = "apple banana apple orange banana apple";
      string[] words = s.Split(' ');
      Dictionary<string, int> freq = new Dictionary<string, int>();

      foreach (string word in words) {
         if (freq.ContainsKey(word))
            freq[word]++;
         else
            freq[word] = 1;
      }

      foreach (KeyValuePair<string, int> item in freq) {
         Console.WriteLine(item.Key + " = " + item.Value + "回");
      }
   }
}

実行結果

apple = 3回
banana = 2回
orange = 1回

このように、配列を使えば文字単位の頻度集計を、Dictionary を使えば単語単位の頻度集計を簡単に実装できます。用途に応じて使い分けてみてください。

  1. Pythonで文字列内の各単語の出現頻度をカウントする3つの方法

    テキスト分析では、さまざまなアルゴリズムで処理を行うために、単語を数えて重み付けすることがよくあります。本記事では、与えられた文中の各単語の頻度(出現回数)を求める方法を紹介します。主に以下の3つのアプローチがあります。1. collectionsモジュールのCounterを使う方法標準ライブラリのcollectionsモジュールに含まれるCounter()を使うと、単語の頻度を簡単に取得できます。まずsplit()で文章を単語に分割し、その結果に対してmost_common()を適用することで、出現回数の多い順に並べたリストが得られます。コード例from collections import

  2. Pythonで文字列内の最初に繰り返される単語を見つける方法

    文字列が1つ与えられ、その中で最初に繰り返し出現する単語を見つけるのが本記事のテーマです。この問題を実装する際には、Pythonの標準ライブラリである「collections」モジュールを活用します。collectionsが提供するCounter()クラスを使うことで、各単語の出現回数を簡単に集計できます。 アルゴリズム 処理の手順は以下のとおりです。 与えられた文字列をスペースで区切り、単語のリストに分割します。 単語のリストをCounter(辞書形式)に変換し、各単語の出現回数を集計します。 単語のリストを先頭から順に走査し、出現回数が1より多い最初の単語を特定します。 サンプルコード