我正在尝试对文字进行分类,然后将名词映射到一个人,一个地方或一个东西。有没有办法或字典呢?
答案 0 :(得分:2)
由于您正在处理分类,因此您可能需要了解AlchemyAPI http://www.alchemyapi.com/products/features/
。你有一个免费的api密钥,你可以尝试。
但是这并不止于此,如果你想手动完成,正如你在@tripleee中看到的那样,提到了WordNet,这也是有趣的,现在你有API可以使用像Java一样与WordNet交互。
此外,您拥有本体并且许多都是免费的,这些本体通常是OWL或RDF。您可以查询这些本体并查找相关信息。对于OWL本体,您可以使用OWLAPI进行交互,对于RDF本体,您可以使用Apache Jena并编写SPARQL语句。
另外,你有dbpedia,这非常有趣,我相信这可能在很大程度上解决你的问题。 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
}
答案 1 :(得分:2)
我很惊讶Named Entity Recognition并且Named Entity Linking没有被提及。对我来说,这正是你所要求的。这是一个例子:假设您有以下文档
Obama flew to Japan yesterday.
认识到本文档中的命名实体相当于确定
Obama/PERSON flew to Japan/LOCATION yesterday.
将这些命名实体链接到知识库(例如维基百科或freebase),您将获得:
Obama/PERSON -> http://en.wikipedia.org/wiki/Barack_Obama
Japan/LOCATION -> http://en.wikipedia.org/wiki/Japan
有许多标准工具可识别或链接命名实体。一般来说,识别更容易,您可以获得开箱即用的相当合理的性能。当然,如果您的数据非常特定于域,那么您可以通过在同一域中的数据上培训自己的模型来获得更高的准确性。
答案 2 :(得分:0)
你正在寻找的是subcategorization并且有字典,但我怀疑你能找到一个实现你的特定三向子类别的字典(即使你想要包括例如“尴尬”和“事物”子类别中的“性别”。)
通过简单的资本化启发式,正确名词与普通名词可能是可行的;也许像WordNet或Wiktionary这样的东西可以帮助理清名称与人名之间的关系吗?
您可能还想查看词典习得,即通过自动或半自动方式构建您自己的子分类词典。也许看看像Brown这样的标记语料库并分析人们在不同语法角色中的表现方式而不是地方?