我正在尝试对推文进行标记,但是遇到了循环问题。 例如,这很好用:
tweet = """This is an example Tweet!"""
# tokenize the sentence
print text
print list(token[1] for token in tokenize.generate_tokens(cStringIO.StringIO(text).readline)if token[1])
但是,这不是:
for tweet in tweets:
text = tweet['tweet']
# tokenize the sentence
print text
print list(token[1] for token in tokenize.generate_tokens(cStringIO.StringIO(text).readline)if token[1])
我把这个清单拿回来了:
Sickipedia is hilarious xD
['S', '\x00', 'i', '\x00', 'c', '\x00', 'k', '\x00', 'i', '\x00', 'p', '\x00', 'e', '\x00', 'd', '\x00', 'i', '\x00', 'a', '\x00', ' ', '\x00', 'i', '\x00', 's', '\x00', ' ', '\x00', 'h', '\x00', 'i', '\x00', 'l', '\x00', 'a', '\x00', 'r', '\x00', 'i', '\x00', 'o', '\x00', 'u', '\x00', 's', '\x00', ' ', '\x00', 'x', '\x00', 'D', '\x00']
什么时候应该读取:
Sikipedia is hilarious xD
['Sikipedia', 'is', 'hilarious', 'xD']
有什么想法吗?我用Mongo的方式使用Python。 提前致谢
答案 0 :(得分:2)
tokenize Package中的NLTK是一个很好的起点。要处理twitter数据中的一些独特现象/字符串,您可以自定义此包以满足您的需求。
答案 1 :(得分:0)
您的输出表明您的文字采用UTF-16编码。尝试打印文本的repr()
(这在任何情况下都是一个好主意),您应该在标记化输出中看到的每个字符之间看到相同的'\x00'
。您应该看到它是哪种形式的UTF-16(如果它不是以\xff\xfe
或\xfe\xff
开头),然后使用decode
字符串方法对其进行解码。您将无法将unicode提供给cStringIO
,因此您必须编写另一个函数来替换cStringIO.StringIO(text).readline
,或者使用更合适的编码将其编码回字节字符串。
答案 2 :(得分:0)