4

適切に解析された複数段落のドキュメント ( \n\nで区切られたすべての段落と "." で区切られた文) のリストがあり、それらを複数の文に分割したいと考えています。資料。たとえば、(2 段落) 入力は次のとおりです。

First sentence of the 1st paragraph. Second sentence of the 1st paragraph. \n\n 

First sentence of the 2nd paragraph. Second sentence of the 2nd paragraph. \n\n

理想的には、出力は次のようになります。

1 First sentence of the 1st paragraph. 

1 Second sentence of the 1st paragraph. 

2 First sentence of the 2nd paragraph.

2 Second sentence of the 2nd paragraph.

ドキュメントを文に分割できる Perl の Lingua::Sentences パッケージに精通しています。ただし、段落番号付けとは互換性がありません。そのため、上記を実現する別の方法があるかどうか疑問に思っています (ドキュメントには略語が含まれていません)。どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

5

区切り文字であるピリオドに依存できる場合は.、次のようにすることができます。

perl -00 -nlwe 'print qq($. $_) for split /(?<=\.)/' yourfile.txt

説明:

  • -00入力レコード区切りを空の文字列に設定します。これは段落モードです。
  • -l出力レコード区切りを入力レコード区切りに設定します。この場合、これは 2 つの改行に変換されます。

次に、後読みアサーションを使用してピリオドで分割し、行番号を前に付けて文を出力します。

于 2013-08-11T17:50:03.110 に答える
2

あなたが言ったようLingua::Sentencesに、必要なものを得るために、このモジュールからの元の出力を少し操作するオプションだと思います

use Lingua::Sentence;

my @paragraphs = split /\n{2,}/, $splitter->split($text);

foreach my $index (0..$#paragraphs) {
    my $paragraph = join "\n\n", map { $index+1 . " $_" } 
        split /\n/, $paragraphs[$index];
    print "$paragraph\n\n";
}
于 2013-08-12T03:21:03.560 に答える