把一个英语单词识别为一个东西或产品?

2024-06-01 00:24:36 发布

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

写一个有以下目标的程序- 能够识别一个词/短语是否代表一个事物/产品。例如- 1) “一种手套包括至少一个食指插座、一个中指插座。<;-能够将手套识别为物品/产品。 2) 尤其是汽车的玻璃升降器。 这样做会告诉我文本是在谈论一件事情/产品。作为对比,下面的文本讨论的是一种方法而不是一种东西/产品->;“一种用于生产尼龙涂层基材的柔性包装膜的挤压涂布工艺,该工艺包括以下步骤……”

我有数百万这样的文本;因此,手工操作是不可行的。到目前为止,在使用NLTK+Python的帮助下,我已经能够识别出一些使用非常相似关键字的特定情况。但是我不能对上面例子中提到的种类做同样的事情。任何帮助都将不胜感激!在


Tags: 文本lt程序目标产品代表物品事情
2条回答

你想做的其实很难。这是一种(非常具体的)语义标记任务。可能的解决办法是:

  • 创建你自己的标签算法,创建训练数据,测试,评估,最后标记你的数据
  • 使用现有的知识库(词典)为每个目标词提取语义标签

第一个选择本身就是一个复杂的研究项目。如果你有时间和资源就去做。在

第二个选项只提供知识库中可用的标签,这些标签可能与您的愿望不符。我将尝试使用python、NLTK和Wordnet(interface already available),您可能可以使用synset超链接来解决您的问题。在

此任务称为命名实体重建问题。在

编辑:在NLP社区中,没有一个明确的NER定义,所以可以说这不是NER任务,而是更一般的序列标记问题的实例。不管怎样,仍然没有一种工具可以开箱即用。在

开箱即用,Standford NLP只能识别以下类型:

Recognizes named (PERSON, LOCATION, ORGANIZATION, MISC), numerical (MONEY, NUMBER, ORDINAL, PERCENT), and temporal (DATE, TIME, DURATION, SET) entities

所以不适合解决这个问题。有一些商业解决方案可以做到这一点,他们可以很容易地找到谷歌“产品名称命名实体识别”,其中一些提供免费试用计划。我不知道有什么免费的现成的解决方案。在

当然,您可以创建自己的模型,方法是手工注释大约1000个包含句子的产品名称,并使用一些基本特性训练一些类似条件随机场分类器的分类器(here is documentation page,它解释了如何使用stanford NLP实现这一点)。这个解决方案应该是合理的,当然也不会是完美的(没有一个系统是完美的,但是有些解决方案比其他方案更好)。在

编辑:这本身就是一项复杂的任务,但不是复杂的任务,除非你想要最先进的结果。您可以在2-3天内创建合理的好模型。以下是(示例)如何使用开源工具执行此操作的分步说明:

  • 下载CRF++并查看提供的示例,它们是一种简单的文本格式
  • 以类似的方式注释数据
    a OTHER 
    glove PRODUCT 
    comprising OTHER
    ... 

等等。在

将注释数据分为两个文件train(80%)和dev(20%)

  1. 使用以下基线模板功能(粘贴到模板文件中)
^{pr2}$

4.运行

crf_learn template train.txt model
crf_test -m model dev.txt  > result.txt 
  1. 看看结果.txt. 其中一列将包含手动标记的数据和其他机器预测的标签。然后你可以比较这些,计算准确度等,然后你可以把新的未标记的数据输入到crf_测试中,得到你的标签。在

正如我所说,这不会是完美的,但我会非常惊讶,如果这不是合理的好(实际上我不久前解决了非常类似的任务),当然更好的只是使用几个关键字/模板

尾注:这忽略了许多事情和解决此类任务的一些最佳实践,不会对学术研究有好处,不能百分之百地保证有效,但对于这个问题和许多类似问题仍然有用,因为相对快速地解决了这个问题。在

相关问题 更多 >