【问题标题】:does python3 nltk word_tokenize() have a string length limit?python3 nltk word_tokenize() 有字符串长度限制吗?
【发布时间】:2019-06-04 21:12:47
【问题描述】:

我有一个由数据库主键和字符串组成的字典。

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

对于字符串长度 对于一些非常大的字符串(长度=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 的方式?

【问题讨论】:

  • 您的输出文件中是否有括号? word_tokenize(y) 已经是一个列表,不要用括号括起来。
  • 谢谢亚历克西斯,不,我要添加多个东西来创建矩阵,只是剪掉部分代码,让它看起来很古怪。

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


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-12
  • 2011-04-19
  • 1970-01-01
  • 2013-05-01
相关资源
最近更新 更多