编写一个具有以下目标的程序 - 能够识别单词/短语是否代表事物/产品。例如 - 1)“手套至少包括食指容器,中指容器......”< -Be能够将手套识别为物品/产品。 2)“在一个窗口调节器,特别是对于汽车,其中窗口连接到驱动器......”< - 能够将调节器识别为物体。 这样做告诉我文本正在谈论一件事/产品。作为对比,下面的文字讨论的是一个过程而不是一个东西/产品 - > “挤出涂层工艺用于生产尼龙涂层基材的柔性包装薄膜,包括......”
我有数百万这样的文字;因此,手动完成它是不可行的。到目前为止,在使用NLTK + Python的帮助下,我已经能够识别出一些使用非常相似的关键字的特定情况。但是我无法对上面例子中提到的那种做同样的事情。任何帮助将不胜感激!
答案 0 :(得分:0)
你想要做的事实上很难。它是一种(非常具体的)语义标签任务。可能的解决方案是:
第一种选择本身就是一个复杂的研究项目。如果你有时间和资源,那就去做吧。
第二个选项只会为您提供知识库中可用的标签,这些标签可能与您的意愿不符。我会尝试使用python,NLTK和Wordnet(interface already available),你可以使用synset hypernyms来解决你的问题。
答案 1 :(得分:-1)
此任务称为命名实体重新调整问题。
编辑:NLP社区中没有NER的清晰定义,因此可以说这不是NER任务,而是更一般的序列标签问题的实例。无论如何,仍然没有工具可以开箱即用。开箱即用,Standford NLP只能识别以下类型:
识别名称(人,地点,组织,MISC),数字 (金钱,数字,正常,百分比)和时间(日期,时间,持续时间, SET)实体
所以它不适合解决这个任务。有一些商业解决方案可以做到这一点,他们可以通过谷歌搜索“产品名称命名实体识别”,其中一些提供免费试用计划。我不知道任何可以免费部署的解决方案。
当然,您可以通过手工创建自己的模型,大约1000个包含句子的产品名称,并训练一些分类器,如条件随机场分类器和一些基本功能(here is documentation page,解释如何使用stanford NLP)。这个解决方案应该合理地工作,当然它不是完美的(没有系统会是完美的,但有些解决方案比其他解决方案更好)。
编辑:这本身就是一项复杂的任务,但除非你想要最先进的结果,否则 复杂。您可以在2-3天内创建合理的好模型。以下是(示例)逐步说明如何使用开源工具执行此操作:
a OTHER glove PRODUCT comprising OTHER ...
等等。
将注释数据分为两个文件列(80%)和开发(20%)
U02:%x[0,0] U01:%x[-1,0] U01:%x[-2,0] U02:%x[0,0] U03:%x[1,0] U04:%x[2,0] U05:%x[-1,0]/%x[0,0] U06:%x[0,0]/%x[1,0]
4.Run
crf_learn template train.txt model
crf_test -m model dev.txt > result.txt
正如我所说,这不会是完美的,但如果这不合理(我实际上不久前解决了非常类似的任务)我会非常惊讶,并且只使用少量关键字/模板可以更好
ENDNOTE:这忽略了许多事情和一些解决此类任务的最佳实践,不利于学术研究,不能100%保证工作,但仍然有用于此和许多类似问题作为相对快速的解决方案。