Python中用于日语句子分割的正则表达式正确写法

4 投票
1 回答
1410 浏览
提问于 2025-04-16 12:53

这是我现在写的内容,但我用的正则表达式不对,没法正确分割句子。请帮我修正一下我的正则表达式,谢谢。

import nltk
import os, sys, re, glob
from nltk.tokenize import RegexpTokenizer

jp_sent_tokenizer = nltk.RegexpTokenizer(u'[^ 「」!?。]*[!?。]')

para = []
para.append (jp_sent_tokenizer.tokenize(u' 「オタ」とも呼ばれているこのペラナカン(華人)の特製料理は、とてもおいしいスナック料理です。これは、ココナッツミルクやチリペースト、レモングラス、ガーリックと一緒に魚を砕き、それを、蒸して柔らかくしたバナナの葉に包んで炭火で軽く焼いた料理です。このレシピは、アジアの数地域で知られています。「オタオタ(otak otak )」は、マレー語で「脳」を意味します。この「オタオタ」という名前は、この料理の柔らかくトロリとした食感から由来しています。魚を使ったオタオタが、最も一般的ですが、エビやイカ、カニ、魚の頭などを用いたものなど、そのバリエーションは豊富です。 ')

for index in range(len(para[0])):
          print para[0][index]
          print 'this is eos'
          #print line
print 'this is eop'

我得到的结果是:

とも呼ばれているこのペラナカン(華人)の特製料理は、とてもおいしいスナック料理です。
this is eos
これは、ココナッツミルクやチリペースト、レモングラス、ガーリックと一緒に魚を砕き、それを、蒸して柔らかくしたバナナの葉に包んで炭火で軽く焼いた料理です。
this is eos
このレシピは、アジアの数地域で知られています。
this is eos
を意味します。
this is eos
という名前は、この料理の柔らかくトロリとした食感から由来しています。
this is eos
魚を使ったオタオタが、最も一般的ですが、エビやイカ、カニ、魚の頭などを用いたものなど、そのバリエーションは豊富です。
this is eos
this is eop

正确的结果应该是这个:

 「オタ」とも呼ばれているこのペラナカン(華人)の特製料理は、とてもおいしいスナック料理です。
this is eos
これは、ココナッツミルクやチリペースト、レモングラス、ガーリックと一緒に魚を砕き、それを、蒸して柔らかくしたバナナの葉に包んで炭火で軽く焼いた料理です。
this is eos
このレシピは、アジアの数地域で知られています。
this is eos
「オタオタ(otak otak )」は、マレー語で「脳」を意味します。
this is eos
「オタオタ(otak otak )」は、マレー語で「脳」を意味します。この「オタオタ」という名前は、この料理の柔らかくトロリとした食感から由来しています。
this is eos
魚を使ったオタオタが、最も一般的ですが、エビやイカ、カニ、魚の頭などを用いたものなど、そのバリエーションは豊富です。 
this is eos
this is eop

1 个回答

6

试试这个:

u'[^!?。]*[!?。]'

看起来引号(「」)确实应该出现在句子里,所以你需要允许它们。

我得提醒你,一般来说(在英语语法中),完整解析一个句子是非常困难的(甚至是不可能的)。比如像 1.2Dr. Fleishman 这些例子。

撰写回答