私は現在、人と人との関係を検出するための簡単なスクリプトに取り組んでいます。$ npを固有名詞の正規表現として定義します。私の最初のタスクでの目標は、それらの間の単語数が固定値より少ない別の固有名詞の左側に表示されるすべての固有名詞を見つけることです。私は次のコードを書きました:
$/ = '';
my $PM = qr{\b[A-Z][\w-]*\w};
my $de = qr{d[aoe]s?};
my $s = qr{[\n ]};
my $np = qr{$PM (?: $s $PM | $s $de $s $PM )*}x;
while(<>){
while(/($np)/g){
print("$1 : ");
my @x = m/(?=(?: $s+ (?: [\w-]+ | ($np)) ){1,7})/gx;
my $y = join(", ", @x);
print("$y\n");
}
}
ファイル内のすべての固有名詞と、それぞれについて、ウィンドウにある固有名詞が出力されることを期待していました。ただし、これは発生していません。どうすれば思い通りに動作させることができますか?
PS:私はPerl初心者です
編集:一部の人々は、期待される入力と出力のサンプルを追加することを推奨しました。次のテキストのファイルがある場合
John asked Mary to meet Anna.
次に、スクリプトを印刷します
John : Mary, Anna
Mary : Anna
Anna :
ただし、現在の状態では、コンマが無限ループで出力されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加