用NLTK查找不完整句子的主题

问题描述:

我有一个产品列表,我尝试按类别进行分类。用NLTK查找不完整句子的主题

“固态硬盘房屋”

“硬盘驱动器电缆”

“1TB移动硬盘”

“500GB硬盘,从生产厂家翻新”:他们将不完整的句子等描述

我该如何使用python和NLP来获得像“Housing,Cable,Drive,Drive”这样的输出,或者描述哪一个词正在修改哪一个? 预先感谢您

NLP技术相对不适合处理这种文本。

表达方式不同:构建一个包含NLP过程以实现所需分类器的解决方案是非常有可能的,但增加的复杂性不一定能在开发速度或分类器精度改进方面带来回报。
如果真的坚持使用NLP技术,POS标签及其识别名词的能力是最明显的想法,但分块和访问WordNet或其他词汇来源是NLTK的其他似是而非的用法。

而是基于简单的正则表达式和一些启发式如这些由NoBugs提出一个特设的解决方案可能是一个合适的解决问题的方法。当然,这样的解决方案承担两个主要风险:

  • 过度拟合回顾了文本的部分/在建立规则的解决方案的
  • 可能杂乱/复杂性考虑,如果太多的规则和子规则介绍。

对完整(或非常大的样本)的文本进行一些简单的静态分析应该有助于指导选择几种启发式方法,并避免过度拟合的担忧。我相当确信,与自定义词典相关的相对较少的规则应该足以生成具有适当精度以及速度/资源性能的分类器。

甲一些想法:

  • 计数所有的语料库中的手的相当大的一部分字(且可能所有双克和三克)。该信息可以通过允许将最多的努力和最严格的规则分配给最常见的模式来推动分类器的设计。
  • 手动引入短字典其中最热门的词汇与联营:
    • 他们的POS功能(主要是二进制事在这里:即名词与改性剂和其他非名词。
    • 他们的代名词根[如果适用]
    • 他们的阶级[如果适用]
  • 如果该模式适用于大部分输入文本,考虑文本年底前或前首先使用硬道理逗号作为课堂选择的主要关键。 如果模式不成立,只是给予第一个和最后一个词更多的权重。
  • 考虑第一遍,其中文本被重写,其中最常见的二元组被替换为将会在词典中的单个词(甚至是人造码字)
  • 考虑也取代最常见的拼写错误或同义词及其相应的同义词根。在输入中添加规则有助于提高精度,并且还有助于使字典中的一些规则/条目在精度上有很大的回报。
  • 对于字典中未找到的单词,假定与数字混合在一起和/或在数字前加上的单词是修饰词,而不是名词。假定
  • 考虑两层分类,其中将不能合理分配类的输入放入“手动堆”中以提示额外的检查,这导致附加的规则和/或字典条目。经过几次迭代后,分类器应该需要越来越少的改进和调整。
  • 寻找非显而易见的功能。例如,某些语料库是由多种来源混合而成,但其中一些来源可能包含特定规则,这些规则可帮助识别来源和/或适用于分类提示。例如,一些来源可能只包含大写的文本(或文本通常超过50个字符,或末尾的截词等)。

恐怕这个答案不能提供Python/NLTK片段作为引入一个解决方案,但坦率地说,这种简单的基于NLTK的方法最多可能令人失望。此外,我们应该有一个更大的输入文本样本集来指导合理方法的选择,包括基于NLTK或NLP技术的方法。

我会创建一个名词列表,手动,您正在寻找的所有名词,或解析字典,如this one。过滤除了名词以外的所有名词,至少可以让你“State Drive”,“Drive Cable”或“Drive”,忽略第一个标点符号后面的所有内容。