python3 nltk word_tokenize()是否具有字符串长度限制?

时间:2019-06-04 21:12:47

标签: python python-3.x nlp nltk token

我有一个包含数据库主键和字符串的字典。

self.mydict = {
1:'a small example'
,2:'some sentence'
,3:'a very long string around 30k characters'
}

对于字符串长度为<1000的键值对,一切都会像我期望的那样标记化。
对于一些非常大的字符串(长度= 30,000),令牌生成器在我的csv输出中返回多条虚线。

def write_data(self):
    headers=[]
    for x,y in self.mydict.items():
        headers.append([word_tokenize(y)])
        print(len(y))

    with open(self.outputdata, 'w', encoding='utf-8', newline='') as f:
        writer = csv.writer(f)
        for item in headers:
            writer.writerow(item)

将结果写入csv,我得到以下信息:

['a','small','example']
['some','sentence']
['a','very','long',
string','around','30k','characters']"

因此30k长度的字符串由于某种原因而中断,并且似乎拆分为另一行。我可以截断字符串的第一个〜1000个字符,这个问题就消失了,但是在进行自然语言处理时,我宁愿保留长字符串。这个错误是由于字符串的长度还是我编写csv的方式引起的?

1 个答案:

答案 0 :(得分:1)

否,NLTK的word_tokenize()函数没有字符串长度限制。

但是csv.writer对字段大小有限制,请参见https://docs.python.org/3.4/library/csv.html?highlight=csv#csv.field_size_limit