【问题标题】:NLP algorithm to 'fill out' search termsNLP算法“填写”搜索词
【发布时间】:2011-09-30 17:28:39
【问题描述】:

我正在尝试编写一个算法(我假设它将依赖自然语言处理技术)来“填写”搜索词列表。这种东西可能有一个我不知道的名字。这种问题叫什么,什么样的算法会给我以下行为?

输入:

    docs = [
    "I bought a ticket to the Dolphin Watching cruise",
    "I enjoyed the Dolphin Watching tour",
    "The Miami Dolphins lost again!",
    "It was good going to that Miami Dolphins game"
    ], 
    search_term = "Dolphin"

输出:

["Dolphin Watching", "Miami Dolphins"]

基本上应该弄清楚,如果“Dolphin”出现,它实际上总是在“Dolphin Watching”或“Miami Dolphins”的二元组中。首选 Python 解决方案。

【问题讨论】:

  • 你怎么知道 Dolphin 是双组词“Dolphin Watching”或“Miami Dolphins”的一部分?是因为每个二元组中的两个单词都是大写的吗?还是您有另一个包含所需二元组的列表?
  • @RobertHarvey:一个好的 NLP 算法应该能够将 [Miami Dolphins] 解析为一个术语。与[海豚观赏]相同。当您像将每个短语组成一个问题一样思考时,它会更容易。问:“你喜欢看什么巡演?” A:【观海豚之旅】,Q:谁输了比赛? A:[[迈阿密海豚队]]。你必须把它解析成一棵树,看看什么属于什么。无论如何都不是一个简单的问题……但您可以获得一些准确的结果。
  • @RobertHarvey 我有一个特定单词的列表,所以我知道 Dolphin 必须在某个地方。

标签: python nlp n-gram


【解决方案1】:

基本上应该弄清楚,如果“Dolphin”出现,它几乎总是在“Dolphin Watching”或“Miami Dolphins”的二元组中。

听起来您想确定 Dolphin 出现在的collocations。有多种搭配查找方法,最流行的是在您的语料库中的术语之间计算point-wise mutual information (PMI) ,然后为 Dolphin 选择具有最高 PMI 的术语。您可能还记得我之前建议的 sentiment analysis algorithm 中的 PMI。

各种搭配查找方法的 Python 实现包含在 NLTK 中,名称为 nltk.collocationsManning and Schütze's FSNLP(1999 年,但仍然是该主题的最新内容)对该领域进行了深入的介绍。

【讨论】:

    【解决方案2】:

    我在大学的 NLP 课程中使用了 Natural Language Toolkit,并取得了不错的成功。我认为它有一些标记器可以帮助您确定哪些是名词,并帮助您将其解析成一棵树。我不记得太多了,但我会从那里开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      相关资源
      最近更新 更多