经常遇到这么一个需求,按照中英文将句子分块。比如一个完整的句子:
本·杰明很happy,因为它妈妈说他是个good boy!
我们需要将它分为如下几块:
本·杰明很
happy
因为它妈妈说他是个
good boy
经常被应用到中文分词里面,我们希望只把中文那块丢到我们的中文分词器。
下面是实现代码:
regex = None
def get_blocks(sent):
global regex
if not regex:
regex = re.compile(u"[\u4E00-\u9FD5·]+|[a-zA-Z ]+")
return regex.findall(sent)
if __name__ == '__main__':
text = u'本·杰明很happy,因为它妈妈说他是个good boy!'
for block in get_blocks(text):
print(block)