NLP - 在预处理过程中何时小写文本

时间:2017-08-24 07:11:02

标签: python machine-learning nlp nltk

我想建立一个语言建模模型,它应该预测句子中的下一个单词,给出前一个单词和/或前一个句子。

用例:我想自动编写报告。所以模型应该自动完成我写的句子。因此,重要的是名词和句子开头的单词大写。

数据:数据是德语,包含很多技术术语。

我的文字语料库是德语,我目前正在进行预处理。因为我的模型应该预测格式正确的句子,所以我决定使用/不使用以下预处理步骤:

  • 没有停用词删除
  • 没有词根化

  • 用NUMBER

  • 替换所有带有数字的表达式
  • 同义词和缩写的标准化
  • 使用RARE替换罕见字词

但是,我不确定是否将语料库转换为小写。在网上搜索时,我发现了不同的意见。虽然较低的套管是很常见的,但它会导致我的模型错误地预测名词的大写,句子开头等。

我还发现只想将句子开头的单词转换为下面Stanford page的小写。

此用例的最佳策略是什么?我应该将文本转换为小写并在预测后将单词更改为正确的大小写吗?我应该按原样离开大写吗?我应该只在句子开头小写单词吗?

非常感谢任何建议和经验!

3 个答案:

答案 0 :(得分:6)

我认为对于您的特定用例,最好将其转换为小写,因为最终,您需要预测给定某个上下文的单词。您可能不需要预测用例中的句子开头。此外,如果预测名词,您可以稍后将其大写。但是请考虑反过来。 (假设你的语料库是英文的)你的模型可能会处理一个句子开头的单词,这个单词的大写字母与句子后面出现但后面没有任何首字母的同一个单词不同。这可能会导致准确性下降。我认为,降低这些话会更好。我在问答系统上做了一个项目,将文本转换成小写是一个很好的权衡。

编辑:由于您的语料库是德语,因此保留大写字母会更好,因为它是德语的一个重要方面。

如果有任何帮助,Spacey支持德语。你用它来训练你的模型。

答案 1 :(得分:3)

答案 2 :(得分:2)

肯定会将大多数单词转换为小写,请考虑以下情况:

  1. 缩略语,例如MIT如果您将其小写为mit,这是一个单词(德语),您将遇到麻烦
  2. 缩写,例如J. A. Snow
  3. 枚举,例如(I),(II),(III),APPENDIX A
  4. 我还会反对<RARE>令牌,你的语料库的百分比是<RARE>,未知单词怎么样?

    由于你正在与德语打交道,而且单词可能是任意长而罕见的,你可能需要一种方法来进一步分解它们。 因此需要某种词形还原和标记化

    我建议从第一天开始使用支持德语的spacy,支持和文档非常有用(谢谢Mathew和Ines)