我有以下方式的形態分析樹,其中前綴,詞幹和後綴是標籤,其他部分是不斷變化的,我需要以開頭的前綴,詞根和後綴重新排序。例如,需要將 (S (un:prefix) (sold:stem))
轉換爲(S (prefix:un) (stem:sold))
。同樣,(S (S (in:prefix) (decipher:stem)) (able:suffix))
到(S (S (prefix:in) (stem:decipher)) (suffix:able))
。 保持結構也很重要。重新排列括號內的文本
我的Perl代碼也:
use strict;
use warnings 'all';
use List::Util 'reduce';
while (<>) {
my ($word, $ss) =/\(([^()]*) \) /gx;
my @ss = split ' ', $ss;
my $str = reduce { sprintf 'S (%s) (%s)', $a, $b } @ss;
printf "%s (%s)\n", $str, $word;
}
它不會做預期的任務。那裏有什麼問題?
'$ STR =〜S/\(([^ \(\)] *)\:([^ \(\)] *)\)/ \ ($ 2 \:$ 1 \)/ g;' – ssr1012
'perl -pi -e's/\(([^(] *):([^)] *)\)/ \($ 2:$ 1 \)/ g 'input.txt'其中input.txt是這些行的文件 – yonyon100