英語の品詞のタグ付けをどのように判断するか、少し混乱しています。この場合、英語の 1 つの単語には 1 つのタイプがあると仮定します。たとえば、「book」という単語は、動詞ではなく名詞として認識されます。時制に基づいて英文を認識したい。たとえば、「I send the book」は過去時制として認識されます。
説明:
いくつかのデータベース (*.txt) ファイルがあります: NounList.txt、verbList.txt、adjectiveList.txt、adverbList.txt、connectionList.txt、prepositionList.txt、articleList.txt。そして、入力された単語がデータベースにある場合、それらの単語のタイプを推測できると思います。しかし、データベースでルックアップを開始するにはどうすればよいでしょうか? たとえば、「I sent the book」: データベースで、名詞としての「I」、動詞としての「sent」、冠詞としての「the」、名詞としての「book」のすべての単語の検索を開始するにはどうすればよいでしょうか? すべてのデータベースのすべての単語を検索するよりも良い方法はありますか? すべてのデータベースに独自の要素があるとは思えません。
ここに私の見解をまとめます。
private List<string> ParseInput(String allInput)
{
List<string> listSentence = new List<string>();
char[] delimiter = ".?!;".ToCharArray();
var sentences = allInput.Split(delimiter, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim());
foreach (var s in sentences)
listSentence.Add(s);
return listSentence;
}
private void tenseReviewMenu_Click(object sender, EventArgs e)
{
string allInput = rtbInput.Text;
List<string> listWord = new List<string>();
List<string> listSentence = new List<string>();
HashSet<string> nounList = new HashSet<string>(getDBList("nounList.txt"));
HashSet<string> verbList = new HashSet<string>(getDBList("verbList.txt"));
HashSet<string> adjectiveList = new HashSet<string>(getDBList("adjectiveList.txt"));
HashSet<string> adverbList = new HashSet<string>(getDBList("adverbList.txt"));
char[] separator = new char[] { ' ', '\t', '\n', ',' etc... };
listSentence = ParseInput(allInput);
foreach (string sentence in listSentence)
{
foreach (string word in sentence.Split(separator))
if (word.Trim() != "")
listWord.Add(word);
}
string testPOS = "";
foreach (string word in listWord)
{
if (nounList.Contains(word.ToLowerInvariant()))
testPOS += "noun ";
else if (verbList.Contains(word.ToLowerInvariant()))
testPOS += "verb ";
else if (adjectiveList.Contains(word.ToLowerInvariant()))
testPOS += "adj ";
else if (adverbList.Contains(word.ToLowerInvariant()))
testPOS += "adv ";
}
tbTest.Text = testPOS;
}
POS のタグ付けは、私の課題における二次的な説明です。そこで、データベースに基づいた POS タグ付けを決定するために、単純なアプローチを使用します。しかし、より簡単なアプローチがある場合: 使いやすく、理解しやすく、疑似コードを取得しやすく、設計しやすい... POS タグ付けを決定するために、私に知らせてください。