如何以full stop为单位,分别统计每句话中的tokens和标点?

maggieq58

语料人生
如何以. ! ?为句子结束标记,统计每句话中的tokens,即生成的结果要每个句子得出一个“tokens”的统计结果 和 “标点个数”的结果。

比如:In 2001, in the home, cookers will be set so that you can cook a complete meal at the touch of a switch.

tokens总数:23
标点总数:3个,2个comma,1个full stop

附件中是样本文件。
 

附件

  • input.txt
    35.2 KB · 浏览: 3
Last edited:
回复: 如何以full stop为单位,分别统计每句话中的tokens和标点?

或者把每句话都单独保存为一个文件去antconc或ws里去统计,但句子太多了。如何能批量的把单个句子都单独保存为一个文件那?
 
回复: 如何以full stop为单位,分别统计每句话中的tokens和标点?

继续抛砖头,perl脚本试了一下:


# 将分句后的文件存入input.txt文件
open (FILE, "input.txt") or die ("Cannnot find file");
open (FILE1, ">output.txt");
$i = 1;
while (<FILE>) {
chomp;

@x = split (/\s+/);
foreach $x (@x) {
if ($x=~/\.$/) {
++$all{"full_stop"};
++$all{"word"};
} elsif ($x=~/,$/) {
++$all{"comma"};
++$all{"word"};
}
# 在这里添加别的标点符号,把xxxx换成标点符号,去掉每行的#
# else if ($x=~/xxxx$/) {
# ++$all{"name of xxxx"};
# ++$all{"word"};
# }


else {++$all{"word"};}
}
print FILE1 "In sentence number $i\n";
foreach $key (sort {$all{$a} <=> $all{$b} } keys %all) {
print FILE1 "The number of $key(s) is $all{$key}\n";
}
print FILE1 "\n";
undef %all;
++$i;
}
 
回复: 如何以full stop为单位,分别统计每句话中的tokens和标点?

实际情况并不那么简单,例如不能把所有的\.都当成full stop,比如etc.中的点、网址中的分隔点等等,还是需要区别对待的
 
回复: 如何以full stop为单位,分别统计每句话中的tokens和标点?

ArthurW说的没错,要对付英文这个点(.),并不是那么容易,它出现的地方太多了,不知道真的能否一一列举完?
 
回复: 如何以full stop为单位,分别统计每句话中的tokens和标点?

继续抛砖头,perl脚本试了一下:


# 将分句后的文件存入input.txt文件
open (FILE, "input.txt") or die ("Cannnot find file");
open (FILE1, ">output.txt");
$i = 1;
while (<FILE>) {
chomp;

@x = split (/\s+/);
foreach $x (@x) {
if ($x=~/\.$/) {
++$all{"full_stop"};
++$all{"word"};
} elsif ($x=~/,$/) {
++$all{"comma"};
++$all{"word"};
}
# 在这里添加别的标点符号,把xxxx换成标点符号,去掉每行的#
# else if ($x=~/xxxx$/) {
# ++$all{"name of xxxx"};
# ++$all{"word"};
# }


else {++$all{"word"};}
}
print FILE1 "In sentence number $i\n";
foreach $key (sort {$all{$a} <=> $all{$b} } keys %all) {
print FILE1 "The number of $key(s) is $all{$key}\n";
}
print FILE1 "\n";
undef %all;
++$i;
}

感谢qhdjason巨细的代码,也感谢楼上所有回答的朋友,这个代码很好。我再总结几个句法关系上重要的标点,再添加进去,是一个很好的脚本啊。感谢大家。
 
Back
顶部