我正在尝试对文本进行分类,然后将名词映射到人、地点或事物上。有没有办法或字典来做到这一点?
3 回答
由于您正在处理分类,因此查看 AlchemyAPI 可能会很有趣,http://www.alchemyapi.com/products/features/
. 您有一个免费的 api 密钥,您可以在其中尝试。
但这并不止于此,如果您想手动完成,正如您在@tripleee 答案中看到的那样,提到了 WordNet,这也很有趣,现在您拥有可以像 Java 一样使用并与之交互的 API词网。
更多,你有本体而且很多是免费的,这些本体通常在 OWL 或 RDF 中。您可以查询这些本体并找到相关信息。对于 OWL 本体,您可以使用 OWLAPI 进行交互,对于 RDF 本体,您可以使用 Apache Jena 并编写 SPARQL 语句。
另外,您有 dbpedia,这非常有趣,我相信这可能会在很大程度上解决您的问题。dbpedia是机器可读格式的维基百科。
例如,您可以编写 SPARQL(很像 SQL 语句),例如假设我想检查 London 和 UK 之间的关系,
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
}
我很惊讶命名实体识别和命名实体链接没有被提及。在我看来,这正是您要问的。这是一个示例:假设您有以下文档
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
有许多标准工具可以识别或链接命名实体。一般来说,识别更容易,并且您可以期望开箱即用地获得相当合理的性能。当然,如果您的数据非常特定于领域,您可以通过在同一领域的数据上训练自己的模型来获得更好的准确性。