7

所以,这个问题可能有点幼稚,但我认为问 Stackoverflow 的友好人士不会有什么坏处。

我现在的公司一段时间以来一直在使用第三方 API 进行 NLP。我们基本上是对一个字符串进行 URL 编码并将其发送过来,它们会为我们提取某些实体(我们有一个我们正在寻找的实体列表)并返回一个实体的 json 映射:sentiment。我们最近决定将这个项目引入内部。

在过去的两天里,我一直在研究 NLTK、Stanford NLP 和 lingpipe,但不知道我是否基本上是在重新发明轮子来做这个项目。

我们已经有包含原始非结构化文本的大量表格和另一个包含从该文本中提取的实体及其情绪的表格。实体是单个单词。例如:

非结构化文本:现在是床。这不是最好的。

实体:床

情绪:负面

我相信这意味着我们有训练数据(非结构化文本)以及实体和情感。现在,我如何在其中一个 NLP 框架上使用这些训练数据并获得我们想要的东西?没有线索。我有一些步骤,但不确定:

  1. 标记句子
  2. 分词
  3. 找出句子中的名词(词性标注)
  4. 找出那句话的情绪。

但这对于我上面提到的情况应该失败,因为它用两个不同的句子谈论床?

所以问题是 - 有没有人知道完成上述任务的最佳框架是什么,以及相同的任何教程(注意:我不是在寻求解决方案)。如果你以前做过这些事情,这个任务是否太大而无法承担?我查找了一些商业 API,但它们的使用成本高得离谱(我们是一家小型初创公司)。

感谢堆栈溢出!

4

4 回答 4

3

OpenNLP 也可以库来看看。至少他们有一个小教程来训练名称查找器并使用文档分类器进行情感分析。要跟踪名称查找器,您必须通过使用 SGML 标签标记文本中的实体来准备训练数据。

http://opennlp.apache.org/documentation/1.5.3/manual/opennlp.html#tools.namefind.training

于 2014-04-29T09:13:50.443 回答
1

NLTK 提供了一个简单的 NER 标记器以及资源。但它并不适合所有情况(包括查找日期。)但是 NLTK 允许您根据要求修改和自定义 NER 标记器。这个链接可能会给你一些关于如何定制的基本示例的想法。此外,如果您对 scala 和函数式编程感到满意,这是您不能错过的一种工具。

干杯...!

于 2014-12-17T07:48:59.093 回答
1

我最近发现了spaCy,它很棒!在链接中,您可以找到与 NLTK、CoreNLP 相比在速度和准确性方面的性能对比,它确实做得很好!

尽管解决您的问题任务不是框架问题。你可以有两个不同的系统,一个用于 NER,一个用于 Sentiment,它们可以完全独立。这些天的炒作是使用神经网络,如果你也愿意,你可以训练一个带有注意力机制的循环神经网络(它在 NLP 任务中表现出最佳性能)来找到实体和情绪。

互联网上到处都有很棒的演示,我阅读并发现有趣的最后两个是[1][2]

于 2017-04-21T08:36:05.980 回答
0

与 Spacy 类似,TextBlob 是另一个快速简便的包,可以完成许多此类任务。

我经常使用 NLTK、Spacy 和 Textblob。如果语料库简单、通用且直接,那么 Spacy 和 Textblob 在 OOTB 中运行良好。如果语料库是高度定制的、特定领域的、混乱的(不正确的拼写或语法)等。我将使用 NLTK 并花更多时间通过擦洗、词形还原等来定制我的 NLP 文本处理管道。

NLTK 教程:http ://www.nltk.org/book/

Spacy 快速入门:https ://spacy.io/usage/

Textblob 快速入门:http ://textblob.readthedocs.io/en/dev/quickstart.html

于 2018-01-31T19:52:42.677 回答