0

我正在尝试对文本进行分类,然后将名词映射到人、地点或事物上。有没有办法或字典来做到这一点?

4

3 回答 3

2

由于您正在处理分类,因此查看 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
}
于 2014-04-29T03:56:33.797 回答
2

我很惊讶命名实体识别命名实体链接没有被提及。在我看来,这正是您要问的。这是一个示例:假设您有以下文档

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

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

于 2014-04-29T16:13:12.463 回答
0

您正在寻找的是子分类,并且有字典,但我怀疑您是否能找到一个实现您的临时三向子类别的字典(即使假设您想在“事物”中包含“尴尬”和“性别”) “子类别)。

通过简单的大写启发式方法,专有名称与常规名词可能是可行的;也许像 WordNet 或 Wiktionary 之类的东西可以帮助区分正确名称中的地方与人?

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

于 2014-04-29T04:19:23.270 回答