我使用过这两个例子
>>> french_tokenizer=nltk.data.load('tokenizers/punkt/french.pickle')
>>> french_tokenizer.tokenize('Deux agressions en quelques jours,voilà ce qui a motivé hier matin le débrayage collège franco-britanique deLp')
['Deux agressions en quelques jours,voil\xc3\xa0 ce qui a motiv\xc3\xa9 hier matin le d\xc3\xa9brayage coll\xc3\xa8ge franco-britanique deLp']
>>> port_tokenizer=nltk.data.load('tokenizers/punkt/portuguese.pickle')
>>> port_tokenizer.tokenize('Seguranças dos aeroportos começam greve de cinco dias no sábado')
['Seguran\xc3\xa7as dos aeroportos come\xc3\xa7am greve de cinco dias no s\xc3\xa1bado']
第一个是法语,第二个是葡萄牙语。为什么我会遇到所有这些问题?第一个遇到了
voilà
答案 0 :(得分:2)
在Python2.7的命令行中键入unicode时,最好使用u'...'
:
>>> from nltk.tokenize import PunktSentenceTokenizer
>>> frtokenizer = PunktSentenceTokenizer('french')
>>> pttokenizer = PunktSentenceTokenizer('portuguese')
>>> s = u'Deux agressions en quelques jours,voilà ce qui a motivé hier matin le débrayage collège franco-britanique deLp'
>>> frtokenizer.tokenize(s)
[u'Deux agressions en quelques jours,voil\xe0 ce qui a motiv\xe9 hier matin le d\xe9brayage coll\xe8ge franco-britanique deLp']
>>> for sentence in frtokenizer.tokenize(s):
... print sentence
...
Deux agressions en quelques jours,voilà ce qui a motivé hier matin le débrayage collège franco-britanique deLp
要获取单词代币,请使用word_token
:
>>> from nltk import word_tokenize
>>> [word_tokenize(sent) for sent in frtokenizer.tokenize(s)]
[[u'Deux', u'agressions', u'en', u'quelques', u'jours', u',', u'voil\xe0', u'ce', u'qui', u'a', u'motiv\xe9', u'hier', u'matin', u'le', u'd\xe9brayage', u'coll\xe8ge', u'franco-britanique', u'deLp']]
>>> for sentence in frtokenizer.tokenize(s):
... print word_tokenize(sentence)
...
[u'Deux', u'agressions', u'en', u'quelques', u'jours', u',', u'voil\xe0', u'ce', u'qui', u'a', u'motiv\xe9', u'hier', u'matin', u'le', u'd\xe9brayage', u'coll\xe8ge', u'franco-britanique', u'deLp']
获取字符串输出而不是字符串列表:
>>> for sentence in frtokenizer.tokenize(s):
... print ' '.join(word_tokenize(sentence))
...
Deux agressions en quelques jours , voilà ce qui a motivé hier matin le débrayage collège franco-britanique deLp
在Python2.7中读取unicode文件时:
$ cat somefrench.txt
Deux agressions en quelques jours,voilà ce qui a motivé hier matin le débrayage collège franco-britanique deLp
$ python
>>> import io
>>> with io.open('somefrench.txt', 'r', encoding='utf8') as fin:
... for line in fin:
... print line
...
Deux agressions en quelques jours,voilà ce qui a motivé hier matin le débrayage collège franco-britanique deLp
并使用word_tokenize
和PunktSentenceTokenizer
:
>>> import io
>>> from nltk import word_tokenize
>>> from nltk.tokenize import PunktSentenceTokenizer
>>> frtokenizer = PunktSentenceTokenizer('french')
>>> with io.open('somefrench.txt', 'r', encoding='utf8') as fin:
... for line in file:
... for sent in frtokenizer.tokenize(line): # sentences
... print ' '.join(word_tokenize(sent))
...
Deux agressions en quelques jours , voilà ce qui a motivé hier matin le débrayage collège franco-britanique deLp
葡萄牙语:
>>> s = u'Seguranças dos aeroportos começam greve de cinco dias no sábado'
>>> pttokenizer = PunktSentenceTokenizer('portuguese')
>>> for sent in pttokenizer.tokenize(s):
... print ' '.join(word_tokenize(sent))
...
Seguranças dos aeroportos começam greve de cinco dias no sábado