2

我想开发一个基于 Java 的应用程序来将同义词映射到唯一的代码或单词。例如,在医学术语中,单词 heart attackcardiac arrest等表示相同的东西。所以我想建立一个数据库(不需要是一个 RDBMS)来存储这样的映射。以后必须添加/修改或删除此类映射。

主要目标是开发一个应用程序以在语义上将实体映射在一起。

我的输入就像一个两三个词的短语,它会被映射到一个标准代码。例如心脏病发作心脏骤停映射到疾病代码HA50122445。明天,如果我发现一个新短语说myo heart crazy ,我想将其映射到代码HA50122445

我查看了Apache Lucene,但它是用于文本挖掘,基于搜索关键字的优先级。我的要求有点类似于Wordnet。Wordnet 数据库是否可编辑或可修改?我的研究说不。这样对吗 ?

如果您能指导我,那将非常有帮助。谢谢

4

4 回答 4

3

查看 Brat 快速注释工具

http://brat.nlplab.org/index.html

它使您可以注释文档,指示两个不同的短语实际上是同一件事,并将这些实体指向规范引用。

它将数据存储在平面文件中。您甚至可以使用斯坦福大学的 CoreNLP 来学习变体(如心脏病发作或“心肌梗塞”)并将它们识别为同一事物。

Wordnet 是可下载的,您可以随时向下载的版本添加新信息。

于 2013-02-20T22:46:21.807 回答
3

您可能想查看UMLS metathesaurusMetaMap。前者是“一个包含数百万个生物医学和健康相关概念的大型、多用途、多语言的词库”。那必须有一些标识符。您可以以此为基础建立您的“数据库”,因为随着时间的推移自己构建它将会非常费力。后者是一个自然语言处理工具包,它可以扫描文本、发现医学概念并将它们映射到 UMLS 词库中的条目。

免责声明:我没有使用这些资源中的任何一个。我的团队为客户构建了类似的资源,但没有免费提供,因此我不推荐它们。

于 2013-02-20T22:58:28.123 回答
0

HashMap,与您的一个“HA501225..”对象的键同义。

Map<String, String> lookup = new HashMap<>();
lookup.put("Heart Attack", "HA50..");
lookup.put("cardiac arrest", "HA50..");

//lookup is now simple -
lookup.get("Heart Attack") // gives us HA5012..

简单的启动解决方案,一旦遇到问题,然后在遇到扩展问题或遇到问题时从那里进行优化。您也许可以查看 Redis,或其他可以为您提供这些映射的键值数据库。

于 2013-02-20T11:38:25.133 回答
-2

RDBMS 是最好的解决方案。只需选择一个。嵌入式示例:HSQLDB。但是任何 mysql 或 postgre 都应该适合。

于 2013-02-20T11:41:10.047 回答