使用 NLTK 查找不完整句子中的主语

2023-12-24

我有一个产品列表,我试图将其分类。他们将用不完整的句子来描述,例如:

“固态硬盘外壳”

“硬盘驱动器电缆”

“1TB硬盘”

“500GB 硬盘,厂家翻新”

如何使用 python 和 NLP 获得诸如“Housing、Cable、Drive、Drive”之类的输出,或者描述哪个单词正在修改哪个单词的树? 先感谢您


NLP 技术对于处理此类文本的能力相对较差。

换句话说:构建一个包含 NLP 流程的解决方案来实现所需的分类器是很有可能的,但增加的复杂性并不一定会在开发速度和分类器精度改进方面带来回报。
如果真的坚持使用 NLP 技术,词性标记及其识别名词的能力是最明显的想法,但分块和访问 WordNet 或其他词汇源是 NLTK 的其他合理用途。

相反,基于简单正则表达式和一些启发式的临时解决方案,例如NoBugs可能是解决问题的适当方法。当然,此类解决方案存在两个主要风险:

  • 过度拟合在制定规则时审查/考虑的文本部分
  • 如果引入太多规则和子规则,解决方案可能会变得混乱/复杂。

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

一些想法:

  • 用手计算语料库中相当大一部分中的所有单词(可能还有所有二元组和三元组)。该信息可以通过允许将最多的努力和最严格的规则分配给最常见的模式来驱动分类器的设计。
  • manually introduce a short dictionary which associates the most popular words with:
    • 它们的 POS 功能(这里主要是二元问题:即名词与修饰语和其他非名词。
    • 他们的同义词根[如果适用]
    • 他们的班级[如果适用]
  • 如果该模式适用于大部分输入文本,请考虑使用文本结尾之前或第一个逗号之前的最后一个单词作为类选择的主键。 如果该模式不成立,只需给予第一个和最后一个单词更多的权重即可。
  • 考虑第一遍,其中文本被重写,用最常见的二元组替换为字典中的单个单词(甚至是人工代码词)
  • 还可以考虑用相应的同义词根替换最常见的拼写错误或同义词。在输入中添加规律性有助于提高精度,还有助于在字典中制定一些规则/一些条目,从而获得很大的精度回报。
  • 对于字典中找不到的单词,假设与数字混合和/或前面有数字的单词是修饰语,而不是名词。假设
  • 考虑两层分类,其中无法合理分配类别的输入被放入“手动堆”中,以提示额外的审查,从而产生额外的规则和/或字典条目。经过几次迭代后,分类器需要的改进和调整应该越来越少。
  • 寻找不明显的特征。例如,一些语料库是由多种来源组成的,但一些来源可能包括有助于识别来源和/或可用作分类提示的特定规律。例如,某些源可能仅包含大写文本(或文本通常长于 50 个字符,或末尾被截断的单词等)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 NLTK 查找不完整句子中的主语 的相关文章

随机推荐