0

次の形式の文字列があります。

word<class> word<class>...
For example:
I<Noun> like<verb> to<Function> eat<verb>...

正規表現を使用して、各クラスで発生する上位 n 語を見つけることは可能ですか?たとえば、正規表現を使用して上位 4 つの名詞語を検索します。単語のリストを出力します。

ありがとう

4

3 に答える 3

3

カウントに正規表現は使用できません。

いいえ、正規表現を使用して上位 n 語を見つけることはできません。

于 2013-01-01T11:31:23.177 に答える
1

あなたがやっていることを達成するためには、品詞タガーを使用して、文で使用されている単語の種類を分類する必要があります。これを行うには、自然言語処理ライブラリのいずれかを使用できます。たとえば。Pythonにはpynltkがあります。 http://answers.oreilly.com/topic/1091-how-to-use-an-nltk-part-of-speech-tagger/

その後、品詞に従って単語をグループ化し、それらを数えます。したがって、正規表現の範囲外です。

于 2013-01-01T11:36:23.687 に答える
0

正規表現パターンは(\\s|^)([a-zA-Z]+?)<Noun>(\\s|$)、見つかったすべての一致で$2、結果を取得するために使用する必要があります

C#では、次のコードを使用してこれを実現できます。

     string type = "Noun";
     int top = 5;

     MatchCollection mc = Regex.Matches("I<Noun> like<verb> to<Function> eat<verb> an apple<Noun>", String.Format("(\\s|^)([a-zA-Z]+?)<{0}>(\\s|$)", type));

     List<string> res = new List<string>();

     for (int i = 0; i < mc.Count && i < top; i++)
     {
        res.Add(mc[i].Result("$2"));
     }
于 2013-01-01T11:47:22.620 に答える