NLTK文档和示例的流行量主要用于词典化和词干化,但在正常化的问题上非常稀少:
请指点我在NLTK挖掘的地方。欢迎任何用于上述目的的NLTK等同物(JAVA或任何其他)。感谢。
UPD 即可。我已经为文本到语音的目的https://github.com/soshial/text-normalization编写了一个文本规范化的python库。它也可能适合你。
答案 0 :(得分:18)
同样在NLTK规范中,许多(子)任务使用纯粹的python methods来解决。
a)将所有字母转换为大写或小写
text='aiUOd'
print text.lower()
>> 'aiuod'
print text.upper()
>> 'AIUOD'
b)删除标点符号
text='She? Hm, why not!'
puncts='.?!'
for sym in puncts:
text= text.replace(sym,' ')
print text
>> 'She Hm why not '
c)将数字转换为单词
在这里,编写一些内容并不是那么简单,但是如果你谷歌的话,有很多现有的解决方案。 Code snippets,libraries等
d)删除重音符号和其他变音符号
查找点 b),只需使用变音符号创建列表 puncts
e)扩展缩写
创建一个包含缩写词的词典:
text='USA and GB are ...'
abbrevs={'USA':'United States','GB':'Great Britain'}
for abbrev in abbrevs:
text= text.replace(abbrev,abbrevs[abbrev])
print text
>> 'United States and Great Britain are ...'
f)删除停用词或“太常见”字样
创建一个包含停用词的列表:
text='Mary had a little lamb'
temp_corpus=text.split(' ')
stops=['a','the','had']
corpus=[token for token in temp_corpus if token not in stops]
print corpus
>> ['Mary', 'little', 'lamb']
g)文本规范化(肿瘤=肿瘤,它是=)
对于肿瘤 - >肿瘤使用regex。
最后,但并非最不重要的是,请注意上面的所有示例通常都需要对真实文本进行校准,我将它们作为前进方向编写。
答案 1 :(得分:1)
我建议使用stopwords.words()来删除停用词。支持以下语言:丹麦语,荷兰语,英语,法语,德语,意大利语,挪威语,葡萄牙语,俄语,西班牙语,瑞典语。
答案 2 :(得分:1)
我可能会有点迟到,但这可能会有所帮助。以下是一些语言的停用词(英语,法语,德语,完成,匈牙利语,土耳其语,俄语,捷克语,希腊语,阿拉伯语,中文,日语,韩语,加泰罗尼亚语,波兰语,希伯来语,挪威语,瑞典语,意大利语,葡萄牙语和西班牙语) ): https://pypi.python.org/pypi/many-stop-words