NLTK中是否有用于文本规范化和封装的类?

时间:2012-02-10 12:08:27

标签: python nltk

NLTK文档和示例的流行量主要用于词典化和词干化,但在正常化的问题上非常稀少:

  • 将所有字母转换为大写或小写
  • 删除标点符号
  • 将数字转换为单词
  • 去除重音符号和其他变音符号
  • 扩展缩写
  • 删除停用词或“太常见”字样
  • 文本规范化(肿瘤=肿瘤,它=它是)

请指点我在NLTK挖掘的地方。欢迎任何用于上述目的的NLTK等同物(JAVA或任何其他)。感谢。

UPD 即可。我已经为文本到语音的目的https://github.com/soshial/text-normalization编写了一个文本规范化的python库。它也可能适合你。

3 个答案:

答案 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 snippetslibraries

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