Nlp 我如何判断一个名词是人、地方还是事物?

Nlp 我如何判断一个名词是人、地方还是事物?,nlp,text-classification,Nlp,Text Classification,我试图对文本进行分类,然后将名词映射到一个人、一个地方或一件事上。有什么方法或字典可以做到这一点吗?既然您正在处理分类问题,那么您可能会对AlchemyAPI感兴趣,http://www.alchemyapi.com/products/features/。你有一个免费的api密钥,在那里你可以尝试一些东西 但这并不止于此,如果您想手动操作,正如您在@tripleee answer中看到的,WordNet提到的,这也是一件有趣的事情,现在您有了API,可以像Java一样使用它并与WordNet交互

我试图对文本进行分类,然后将名词映射到一个人、一个地方或一件事上。有什么方法或字典可以做到这一点吗?

既然您正在处理分类问题,那么您可能会对AlchemyAPI感兴趣,
http://www.alchemyapi.com/products/features/
。你有一个免费的api密钥,在那里你可以尝试一些东西

但这并不止于此,如果您想手动操作,正如您在@tripleee answer中看到的,WordNet提到的,这也是一件有趣的事情,现在您有了API,可以像Java一样使用它并与WordNet交互

此外,您有本体,并且许多是免费的,这些本体通常在OWL或RDF中。您可以查询这些本体并找到相关信息。对于OWL本体,您可以使用OWLAPI进行交互;对于RDF本体,您可以使用ApacheJena并编写SPARQL语句

还有dbpedia,它非常有趣,我相信这可以在很大程度上解决您的问题。是机器可读格式的维基百科

例如,您可以编写SPARQL(很像SQL语句),例如,假设我想检查伦敦和英国之间的关系

SELECT ?property
WHERE {
:London ?property :United_Kingdom
} 
或者假设我想得到所有的国家和城市

SELECT DISTINCT ?city ?country
WHERE { ?city rdf:type dbpedia-owl:City ;
rdfs:label ?label ;
dbpedia-owl:country ?country
}

因为您正在处理分类问题,所以您可能会对AlchemyAPI感兴趣,
http://www.alchemyapi.com/products/features/
。你有一个免费的api密钥,在那里你可以尝试一些东西

但这并不止于此,如果您想手动操作,正如您在@tripleee answer中看到的,WordNet提到的,这也是一件有趣的事情,现在您有了API,可以像Java一样使用它并与WordNet交互

此外,您有本体,并且许多是免费的,这些本体通常在OWL或RDF中。您可以查询这些本体并找到相关信息。对于OWL本体,您可以使用OWLAPI进行交互;对于RDF本体,您可以使用ApacheJena并编写SPARQL语句

还有dbpedia,它非常有趣,我相信这可以在很大程度上解决您的问题。是机器可读格式的维基百科

例如,您可以编写SPARQL(很像SQL语句),例如,假设我想检查伦敦和英国之间的关系

SELECT ?property
WHERE {
:London ?property :United_Kingdom
} 
或者假设我想得到所有的国家和城市

SELECT DISTINCT ?city ?country
WHERE { ?city rdf:type dbpedia-owl:City ;
rdfs:label ?label ;
dbpedia-owl:country ?country
}

您正在寻找的是,并且有相关的词典,但我怀疑您是否能找到一个实现您的特殊三向子类别的词典(即使假设您希望在“thing”子类别中包括例如“awkwardness”和“gender”)

通过简单的大写启发,专有名词与普通名词可能是可行的;也许像WordNet或Wiktionary这样的东西可以帮助在专有名称中区分地点和人员


您可能还希望研究词典获取,即通过自动或半自动方式构建自己的子类别词典。也许可以看看一个标记的语料库,分析人们如何在不同的语法角色中出现,而不是在不同的地方出现?

你正在寻找的是,而且有相关的词典,但我怀疑你能否找到一个实现你的特别三向子类别的词典(即使假设你想在“东西”中包括例如“笨拙”和“性别”)子类别)

通过简单的大写启发,专有名词与普通名词可能是可行的;也许像WordNet或Wiktionary这样的东西可以帮助在专有名称中区分地点和人员

您可能还希望研究词典获取,即通过自动或半自动方式构建自己的子类别词典。也许可以看看一个带标签的语料库,比如说,分析人们是如何在不同的语法角色中出现的,而不是在不同的地方出现的?

我很惊讶,而且没有被提及。听起来这正是你要问的。下面是一个示例:假设您有以下文档

Obama flew to Japan yesterday.
识别本文档中的命名实体相当于找出

Obama/PERSON flew to Japan/LOCATION yesterday.
将这些命名实体链接到知识库(例如wikipedia或freebase),您将获得:

Obama/PERSON -> http://en.wikipedia.org/wiki/Barack_Obama
Japan/LOCATION -> http://en.wikipedia.org/wiki/Japan
有许多标准工具可以识别或链接命名实体。一般来说,识别更容易,您可以期望获得非常合理的性能。当然,如果您的数据是非常特定于领域的,您可以通过在同一领域的数据上训练您自己的模型来获得更高的准确性。

我很惊讶,没有人提到。听起来这正是你要问的。下面是一个示例:假设您有以下文档

Obama flew to Japan yesterday.
识别本文档中的命名实体相当于找出

Obama/PERSON flew to Japan/LOCATION yesterday.
将这些命名实体链接到知识库(例如wikipedia或freebase),您将获得:

Obama/PERSON -> http://en.wikipedia.org/wiki/Barack_Obama
Japan/LOCATION -> http://en.wikipedia.org/wiki/Japan

有许多标准工具可以识别或链接命名实体。一般来说,识别更容易,您可以期望获得非常合理的性能。当然,如果您的数据非常特定于领域,那么您可以通过在同一领域的数据上训练自己的模型来获得更高的准确性。

如何进行更精确的分类?例如,“约翰喜欢苹果,讨厌樱桃”。->“约翰/人喜欢苹果/水果,讨厌樱桃/水果”我怎样才能做一个更精确的分类?例如,“约翰喜欢苹果,讨厌樱桃”。->“约翰/某人喜欢苹果/水果,讨厌樱桃/水果”