、ファイルは 'UTF8' であり、あなたはPython2を使用している場合は、io.open()
でencoding='utf8'
パラメータを使用している場合、それは良いことでしょう:
import io
from nltk import word_tokenize, sent_tokenize
with io.open('file.txt', 'r', encoding='utf8') as fin:
document = []
for line in fin:
tokens += [word_tokenize(sent) for sent in sent_tokenize(line)]
Python3の場合は、単に:
from nltk import word_tokenize
with open('file.txt', 'r') as fin:
document = []
for line in fin:
tokens += [word_tokenize(sent) for sent in sent_tokenize(line)]
Do takトークン化についてはhttp://nedbatchelder.com/text/unipain.html
でのEA見て、我々は、各行が1つまたは複数の文で構成されることがあります、段落のいくつかの並べ替えが含まれていると仮定した場合、我々は最初に全体を格納するためのリストを初期したいと思いますドキュメント:
document = []
その後、我々は、ラインを反復処理し、アップ文章に行を分割:
for line in fin:
sentences = sent_tokenize(line)
はその後、我々はトンに文章を分割okens:私たちは、トークン化された文章を保存するために、当社の文書のリストを更新するので
token = [word_tokenize(sent) for sent in sent_tokenize(line)]
、我々は使用:
推奨しない
document = []
for line in fin:
tokens += [word_tokenize(sent) for sent in sent_tokenize(line)]
!(でも、1行で可能です):
[email protected]:~$ cat file.txt
this is a paragph. with many sentences.
yes, hahaah.. wahahha...
[email protected]:~$ python
Python 2.7.11+ (default, Apr 17 2016, 14:00:29)
[GCC 5.3.1 20160413] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import io
>>> from itertools import chain
>>> from nltk import sent_tokenize, word_tokenize
>>> list(chain(*[[word_tokenize(sent) for sent in sent_tokenize(line)] for line in io.open('file.txt', 'r', encoding='utf8')]))
[[u'this', u'is', u'a', u'paragph', u'.'], [u'with', u'many', u'sentences', u'.'], [u'yes', u',', u'hahaah..', u'wahahha', u'...']]
最初にデコードしてから小文字にします。そうしないと、ASCII以外の文字で正しくない動作をします。 – alexis