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

2024-09-20 03:56:55 发布

您现在位置:Python中文网/ 问答频道 /正文

NLTK文档和示例的流行数量专门用于元素化和词干处理,但很少涉及以下规范化问题:

  • 将所有字母转换为小写或大写
  • 删除标点符号
  • 将数字转换为单词
  • 删除重音符号和其他音调符号
  • 扩展缩写
  • 删除停止字或“太普通”字
  • 文本规范化(tumor=tumor,it's=it is)

请告诉我在NLTK的什么地方挖。欢迎任何用于上述目的的NLTK等价物(JAVA或任何其他)。谢谢。

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


Tags: 文档文本目的元素示例数量字母it
3条回答

另外,在NLTK规范中,许多(子)任务都是使用纯pythonmethods解决的。

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)将数字转换为单词

在这里,写一个fewliner并不是一件容易的事,但是如果你用google搜索的话,已经有很多解决方案了。Code snippetslibraries

d)删除重音符号和其他音调符号

查找pointb),只需创建一个带有发音符号的列表,如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)文本规范化(tumor=tumor,it's=it is)

对于肿瘤->;肿瘤使用regex

最后,但并非最不重要的是,请注意,上面所有的例子通常需要对真实的文本进行校准,我把它们作为前进的方向来写。

我可能会晚一点,但这可能会有帮助。以下是某些语言(英语、法语、德语、Finish、匈牙利语、土耳其语、俄语、捷克语、希腊语、阿拉伯语、汉语、日语、韩语、加泰罗尼亚语、波兰语、希伯来语、挪威语、瑞典语、意大利语、葡萄牙语和西班牙语)的停止词: https://pypi.python.org/pypi/many-stop-words

我建议使用stopwords.words()来删除stopwords。支持以下语言:丹麦语、荷兰语、英语、法语、德语、意大利语、挪威语、葡萄牙语、俄语、西班牙语、瑞典语。

相关问题 更多 >