我有一个要分类的产品清单.将用不完整的句子来描述它们,例如:
“固态驱动器外壳”
“硬盘驱动器电缆”
“ 1TB硬盘”
“ 500GB硬盘,由制造商翻新”
如何使用python和NLP获得“房屋,电缆,驱动器,驱动器”之类的输出,或描述哪个词正在修改哪个词的树?
先感谢您
解决方法:
NLP技术相对较差,无法处理此类文本.
措辞不同:可以构建一个包含NLP流程以实现所需分类器的解决方案,但是增加的复杂性并不一定能在开发速度或提高分类器精度方面获得回报.
如果真的坚持使用NLP技术,则POS标记及其识别名词的能力是最明显的想法,但是NLTK的其他合理用法是使用Chunking和访问WordNet或其他词汇来源.
相反,基于简单正则表达式和NoBugs建议的一些启发式方法的即席解决方案可能是解决此问题的合适方法.当然,这种解决方案具有两个主要风险:
>过度适合于在制定规则时审查/考虑的文本部分
>如果引入太多规则和子规则,则解决方案可能会变得混乱/复杂.
对要考虑的完整(或非常大的示例)文本进行一些简单的静态分析,应有助于指导一些启发式方法的选择,并避免过度拟合的问题.我非常确定,与定制字典相关联的相对较少的规则应该足以产生具有适当精度以及速度/资源性能的分类器.
一些想法:
>在手的语料库的相当大的部分中计算所有单词(可能还有所有的二元语法和三元语法).通过允许将最大的努力和最严格的规则分配给最常见的模式,此信息可以驱动分类器的设计.
>手动引入简短的词典,该词典将最受欢迎的单词与以下内容相关联:
>的POS功能(此处主要是二进制问题:即名词vs.修饰语和其他非名词).
>它们的同义词根[如果适用]
>他们的班级[如果适用]
>如果该模式适用于大多数输入文本,请考虑使用文本结尾之前或第一个逗号之前的最后一个单词作为类选择的主键.
如果该模式不成立,则只需对第一个和最后一个单词赋予更大的权重.
>考虑第一遍,用最常见的二元语法重写文本,然后将其替换为词典中的单个单词(甚至是人工代码单词)
>还考虑用其相应的同义词根替换最常见的错别字或同义词.在输入中添加规则性有助于提高精度,还有助于使字典中的一些规则/一些条目具有较高的精度回报.
>对于在词典中找不到的单词,假定与数字混合和/或以数字开头的单词是修饰语,而不是名词.假设
>考虑两级分类,将无法合理地指定类别的输入放入“手动堆”中,以提示进行附加检查,从而导致附加规则和/或词典条目.经过几次迭代后,分类器需要进行的改进和调整越来越少.
>寻找非显而易见的功能.例如,一些语料库由多种来源混合而成,但是某些来源可能包括有助于识别来源和/或可用作分类提示的特定规则.例如,某些来源可能仅包含大写的文本(或通常长于50个字符的文本,或末尾的单词被截断等).
恐怕这个答案不足以提供Python / NLTK片段作为解决方案的入门,但是坦率地说,这种基于NLTK的简单方法充其量只能令人失望.同样,我们应该有更大的输入文本样本集来指导合理方法的选择,包括基于NLTK或NLP技术的方法.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。