ファイルのフォーマット
POS ID PosScore NegScore SynsetTerms Gloss
a 00001740 0.125 0 able#1" able to swim"; "she was able to program her computer";
a 00002098 0 0.75 unable#1 "unable to get to town without a car";
a 00002312 0 0 dorsal#2 abaxial#1 "the abaxial surface of a leaf is the underside or side facing away from the stem"
a 00002843 0 0 basiscopic#1 facing or on the side toward the base
a 00002956 0 0.23 abducting#1 abducent#1 especially of muscles; drawing away from the midline of the body or from an adjacent part
a 00003131 0 0 adductive#1 adducting#1 adducent#1 especially of muscles;
このファイルで、(ID、PosScore、NegScore、および SynsetTerms)フィールドを抽出します。( ID,PosScore,NegScore)フィールド データの抽出は簡単で、これらのフィールドのデータには次のコードを使用します。
Regex expression = new Regex(@"(\t(\d+)|(\w+)\t)");
var results = expression.Matches(input);
foreach (Match match in results)
{
Console.WriteLine(match);
}
Console.ReadLine();
正しい結果が得られますが、ファイル化されたSynsetTermsは問題を引き起こします。行によっては 2 つ以上の単語が含まれているため、単語を整理して PosScore と NegScore を取得する方法です。
たとえば、5 行目には 2 つの単語がabducting#1
ありますabducent#1
が、どちらも同じスコアです。
Word とそのスコアを取得する行の正規表現は次のようになります。
Word PosScore NegScore
abducting#1 0 0.23
abducent#1 0 0.23