我是NLP的新手,我有列应用名称及其描述。数据看起来像这样
app1,description1(app1的一些信息,工作原理)
app2,description2
。
。
app(n),description(n)
根据这些描述,我需要生成一组有限的名词和动词。在最终的应用程序中,当我们从该列表中对名词和动词进行配对时,输出应该是满足该名词+动词的应用程序列表。
我不知道从哪里开始,你能指导我从哪里开始。谢谢。
答案 0 :(得分:0)
在句子中查找词语的形态句法类别的任务称为词性(或PoS)标记。 在您的情况下,您可能还需要首先对文本进行标记化。
为此,您可以使用nltk,spacy或Stanford NLP tagger(以及其他工具)。
请注意,根据您使用的型号,名词可以有多个标签(单数名词,复数名词,专有名词)和动词(取决于时态和人物)。
NLTK示例:
import nltk
description = "This description describes apps with words."
tokenized_description = nltk.word_tokenize(description)
tagged_description = nltk.pos_tag(tokenized_description)
#tagged_description:
# [('This', 'DT'), ('description', 'NN'), ('describes', 'VBZ'), ('apps', 'RP'), ('with', 'IN'), ('words', 'NNS'), ('.', '.')]
# map the tags to a smaller set of tags
universal_tags_description = [(word, nltk.map_tag("wsj", "universal", tag)) for word, tag in tagged_description]
# universal_tags_description:
# [('This', 'DET'), ('description', 'NOUN'), ('describes', 'VERB'), ('apps', 'PRT'), ('with', 'ADP'), ('words', 'NOUN'), ('.', '.')]
filtered = [(word, tag) for word, tag in universal_tags_description if tag in {'NOUN', 'VERB'}]
# filtered:
# [('description', 'NOUN'), ('describes', 'VERB'), ('words', 'NOUN')]