unicode中中文的编码为/u4e00-/u9fa5,因此正则表达式u”[\u4e00-\u9fa5]+”可以表示一个或者多个中文字符
>>>import re
>>>s='中文:123456aa哈哈哈bbcc'.decode('utf8')
>>>s
u'\u4e2d\u6587\uff1a123456aa\u54c8\u54c8\u54c8bbcc'
>>>print s
中文:123456aa哈哈哈bbcc
>>>re.match(u"[\u4e00-\u9fa5]+",s)
<_sre.SRE_Match object at 0xb77742c0>
>>>pat='中文'.decode("utf8")
>>>re.search(pat,s)
<_sre.SRE_Match object at 0x16a16df0>
>>>newpat='这里是中文内容'.decode("utf8")
>>>news=re.sub(pat,newpat,s)
>>>print news
这里是中文内容:123456aa哈哈哈bbcc
from:http://blog.aizhet.com/web/12078.html
一、NLTK进行分词用到的函数:
nltk.sent_tokenize(text) #对文本按照句子进行分割
nltk.word_tokenize(sent) #对句子进行分词
二、NLTK进行词性标注
用到的函数:
nltk.pos_tag(tokens)#tokens是句子分词后的结果,同样是句子级的标注
三、NLTK进行命名实体识别(NER)
用到的函数:
nltk.ne_chunk(tags)#tags是句子词性标注后的结果,同样是句子级
上例中,有两个命名实体,一个是Xi,这个应该是PER,被错误识别为GPE了; 另一个事China,被正确识别为GPE。
四、句法分析
nltk没有好的parser,推荐使用stanfordparser
但是nltk有很好的树类,该类用list实现
可以利用stanfordparser的输出构建一棵python的句法树