【问题标题】:Extracting abstract nouns and adjectives from a string in Python [duplicate]从Python中的字符串中提取抽象名词和形容词[重复]
【发布时间】:2021-06-25 05:38:42
【问题描述】:

我正在处理具有包含反馈文本的列之一的数据框。它已被清理干净。 我只需要知道如何从字符串中提取抽象名词和形容词。

这是我拥有的已清理文本的示例:

输出必须仅包含来自每个反馈的抽象名词和形容词。

例如,反馈是:

"smells good also nice taste in love with it"

输出应该是:

good nice love

我尝试使用 nltk pos tagger 和 textblob 词典。我可以使用 textblob 提取所有形容词,但对于名词,它会标记所有名词。我不能只区分抽象名词,比如上面提到的例子中的“爱”。

【问题讨论】:

  • 到目前为止你做了什么
  • 我尝试使用 nltk pos tagger 和 textblob 词典。我可以使用 textblob 提取所有形容词,但对于名词,它会标记所有名词。我不能只区分抽象名词,比如上面提到的例子中的“爱”。 @ArkodeepRay
  • “味道”是一个名词。你为什么不想要它?
  • 我很想拥有它。我没有添加输出的错误,抱歉。但我要说明的一点是,我只需要提取抽象名词(不是专有名词、普通名词、集体名词或任何其他形式)。
  • 假设句子是“我喜欢留在德克萨斯”。我需要的唯一提取词是“爱”而不是“德克萨斯”,也就是说,只是抽象名词。希望我能传达我的观点。

标签: python python-3.x nlp sentiment-analysis pos-tagger


【解决方案1】:

该句子在语法上不正确(它遗漏了第一个主语“it”)。 NLP 工具通常不习惯解析不正确的句子。然而,NLTK 甚至几乎正确地解析了原始句子:

s = "smells good also nice taste in love with it"
nltk.pos_tag(nltk.word_tokenize(s))
#[('smells', 'NNS'), ('good', 'JJ'), ('also', 'RB'), ('nice', 'JJ'), 
# ('taste', 'NN'), ('in', 'IN'), ('love', 'NN'), ('with', 'IN'), ('it', 'PRP')]

如果你改正语法,结果是100%正确的:

s = "it smells good also nice taste in love with it"
nltk.pos_tag(nltk.word_tokenize(s))
#[('it', 'PRP'), ('smells', 'VBZ'), ('good', 'JJ'), ('also', 'RB'), 
# ('nice', 'JJ'), ('taste', 'NN'), ('in', 'IN'), ('love', 'NN'), 
# ('with', 'IN'), ('it', 'PRP')]

还有你想要的输出:

[word for word,tag in nltk.pos_tag(nltk.word_tokenize(s)) if tag[0] in "NJ"]
#['good', 'nice', 'taste', 'love']

【讨论】:

  • 对于反馈或其他用户输入文本,您永远无法确定它是否符合语法。而且大多数 NLP 工具实际上都可以应付这种情况,否则它们将毫无用处。
猜你喜欢
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 2014-05-19
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
相关资源
最近更新 更多