的Text::Balanced
模塊是你彷彿是,如果以後你打算使用Perl。下面應該能夠提取你的例子中所有引用的語音(不漂亮,但完成工作)。
它也適用於丹尼斯的測試案例。
下面的代碼的優點在於,報價是由段分組,其可以是或可以不是用於以後的分析
有用腳本
use strict;
use warnings;
use Text::Balanced qw/extract_quotelike extract_multiple/;
my %quotedSpeech;
{
local $/ = '';
while (my $text = <DATA>) { # one paragraph at a time
while (my $speech = extract_multiple(
$text,
[sub{extract_quotelike($_[0])},],
undef,
1))
{ push @{$quotedSpeech{$.}}, $speech; }
}
}
# Print total number of paragraphs in DATA filehandle
print "Total paragraphs: ", (sort {$a <=> $b} keys %quotedSpeech)[-1];
# Print quotes grouped by paragraph:
foreach my $paraNumber (sort {$a <=> $b} keys %quotedSpeech) {
print "\n\nPara ",$paraNumber;
foreach my $speech (@{$quotedSpeech{$paraNumber}}) {
print "\t",$speech,"\n";
}
}
# How many quotes in paragraph 8?
print "Number of quotes in Paragraph 8: ", scalar @{$quotedSpeech{8}};
__DATA__
「啊,那是完全正確的!」阿遼沙驚呼道。 「
」哦,不要玩傻瓜! 有些白癡進來了,你把我們給 慚愧!「在窗邊哭泣的女孩, 突然轉向她的父親與 輕蔑和輕蔑的空氣。
「等一下,瓦爾瓦拉!」哭泣她的父親 ,說得很透露,但 非常讚賞地看着他們。 「這是她的性格,」他說, 再次解決阿遼沙。
「你去哪兒了?」他問他。
「我認爲,」他說,「我忘了 東西......我的手帕,我覺得 ....好吧,即使我還沒有 忘記任何東西,讓我留一個 小「。
他坐下了。父親站在他身上。 「你也坐下,」他說。
他說:「它並不總是奏效。」
「其次,」我說,「 三個引用短語失敗......」他完成了 我的想法,「有兩個沒有引號的。
我回答說:「沒錯。」沮喪。
輸出
Total paragraphs: 10
Para 1 "Ah, that's perfectly true!"
Para 2 "Oh, do leave off playing the fool! Some idiot comes in, and you put us
to shame!"
Para 3 "Wait a little, Varvara!"
"That's her character,"
Para 4 "Where have you been?"
Para 5 "I think,"
"I've forgotten something... my handkerchief, I think.... Well, even if
I've not forgotten anything, let me stay a little."
Para 7 "You sit down, too,"
Para 8 "It doesn't always work."
Para 9 "Secondly,"
"it fails for three quoted phrases..."
"with two unquoted ones."
Para 10 "That's right."
如果不是「父親站在他身上」,你會做什麼?這句話是「父親站在吉姆身上。」? – Robusto 2010-03-13 20:53:13
我認爲你需要給出一個更清晰的'小寫句子片段'的定義。 特別是,爲什麼「驚歎阿遼沙」。一個小寫的句子片段,但「父親站在他身上。」不是? – Dancrumb 2010-03-13 21:06:14
我認爲「小寫的句子片段」,他的意思是「信號短語」http://nutsandbolts.washcoll.edu/quoting.html#signal – 2010-03-14 21:47:49