- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我希望使用 WordNet 从一组基本术语中寻找相似术语的集合。
例如,单词'discouraged' - 潜在的同义词可能是:daunted, glum, deterred, pessimistic
。
我还想识别潜在的二元语法,例如; 击败、推迟、屈服
等
如何使用 Java 或 Python 提取这些信息?是否有允许此类查询的托管 WordNet 数据库/Web 界面?
谢谢!
最佳答案
通过查看最容易理解 WordNet 数据在 Prolog 文件中。它们记录在此处:
http://wordnet.princeton.edu/wordnet/man/prologdb.5WN.html
WordNet 术语被分组为同义词集。同义词集是最大的同义词集。 Synsets 有一个主键,所以它们可以被使用在语义关系中。
所以回答你的第一个问题,你可以列出不同的词义和对应的近义词如下:
Input X: Term
Output Y: Sense
Output L: Synonyms in this Sense
s_helper(X,Y) :- s(X,_,Y,_,_,_).
?- setof(H,(s_helper(Y,X),s_helper(Y,H)),L).
例子:
?- setof(H,(s_helper(Y,'discouraged'),s_helper(Y,H),L).
Y = 301664880,
L = [demoralised, demoralized, discouraged, disheartened] ;
Y = 301992418,
L = [discouraged] ;
No
对于问题的第二部分,WordNet 术语是单词序列。所以你可以搜索这个 WordNet 条款对于如下单词:
Input X: Word
Output Y: Term
s_helper(X) :- s(_,_,X,_,_,_).
word_in_term(X,Y) :- atom_concat(X,' ',H), sub_atom(Y,0,_,_,H).
word_in_term(X,Y) :- atom_concat(' ',X,H), atom_concat(H,' ',J), sub_atom(Y,_,_,_,J).
word_in_term(X,Y) :- atom_concat(' ',X,H), sub_atom(Y,_,_,0,H).
?- s_helper(Y), word_in_term(X,Y).
例子:
?- s_helper(X), word_in_term('beat',X).
X = 'beat generation' ;
X = 'beat in' ;
X = 'beat about' ;
X = 'beat around the bush' ;
X = 'beat out' ;
X = 'beat up' ;
X = 'beat up' ;
X = 'beat back' ;
X = 'beat out' ;
X = 'beat down' ;
X = 'beat a retreat' ;
X = 'beat down' ;
X = 'beat down' ;
No
这会给你潜在的 n-gram,但不会太多形态变异。 WordNet 也展示了一些词汇关系,这可能是有用的。
但是我给出的两个 Prolog 查询都不是很有效。问题是缺少一些单词索引。 Java实现当然可以实现更好的东西。想象一下:
class Synset {
static Hashtable<Integer,Synset> synset_access;
static Hashtable<String,Vector<Synset>> term_access;
}
一些 Prolog 可以通过索引指令来做同样的事情,它是可以指示 Prolog 系统对多个索引谓词的参数。
建立网络服务也不应该那么困难在 Java 或 Prolog 中。许多 Prologs 系统很容易允许嵌入Web 服务器中的 Prolog 程序和 Java 冠军 servlet。
可在此处找到支持 Web 服务器的 Prolog 列表:
最好的问候
关于java - Word Net - Word Synonyms & related word constructs - Java 或 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984264/
我想标记一个字符串,例如 Best Beat Makers,以几乎类似于 NGram 的方式为每个单词生成标记,例如: IN: "Best Beat Makers" OUT: ["Best", "B
这个问题在这里已经有了答案: Is there a way to word-wrap long words in a div? (6 个答案) 关闭 7 年前。
我想编写一个 Python 代码来检查字符串是否包含类似于以下内容的内容: 'word.Word' => 将其替换为 'word.\nWord'。 smallLetter.capitalLetter
我想编写一个 Python 代码来检查字符串是否包含类似于以下内容的内容: 'word.Word' => 将其替换为 'word.\nWord'。 smallLetter.capitalLetter
我有以下正则表达式: ^--([\w|-]+) 我想匹配 --word --no-word 但不是: ---word ----word 最佳答案 将表情更改为 ^--(\w[-\w]*) 这需要在两个
在我的加载项中,我需要为每个打开的文档创建一个任务 Pane 。在加载项的启动方法中,我订阅了 ApplicationEvents4_Event.NewDocument 和 Application.D
我使用 word javascript api 开发了一个 word 插件。我的文档 .docx 文件在服务器上,我需要在加载项中单击按钮打开该 .docx 文档作为新的 Word 文档。 请指导我如
我需要在某个地方修复一些 CSS,因为我的文本没有环绕,如果它是一个非常长的单词,它会无限期地继续下去。 在大多数情况下,我在我的 CSS 文件中尝试了 word-wrap: break-word;
这个问题在这里已经有了答案: What is the difference between "word-break: break-all" versus "word-wrap: break-word
这个问题在这里已经有了答案: What is the differect between word-wrap and overflow-wrap? [duplicate] (1 个回答) Is t
问题详细描述如下: 给定两个单词(beginWord 和 endWord)和字典的单词列表,找出是否存在从 beginWord 到 endWord 的转换序列,这样: 一次只能更改一个字母 每个转换后
我以前没有使用过邮件合并字段,我发现的所有内容都要求您在能够插入合并字段之前选择一个数据源。我想要做的就是将字段放在 word 文档上,并且在代码使用它之前不要将其合并。我基本上是在创建文档模板。这在
将此代码放置在ThisDocument_Startup之外的Word文档级VSTO解决方案中的某个位置(创建带单击事件的功能区按钮): int zero = 0; int divideByZero =
有没有办法在没有加载项的情况下启动 MS Word(仅此实例)?我只能找到一种方法来完全禁用加载项。 最佳答案 来自Word command line switches documentation ,
有没有办法在没有加载项的情况下启动 MS Word(仅此实例)?我只找到一种方法来完全禁用加载项。 最佳答案 来自Word command line switches documentation ,您
当使用 URI 方案从网页上托管的 word 模板打开新文档时不起作用。 https://msdn.microsoft.com/en-us/library/office/dn906146.aspx 这
我的问题: overflow-wrap: break-word 和 word-break: break-word 有区别吗? 非重复: 这里有一些现有的问题,乍一看可能是重复的,但实际上不是。 Wha
我希望使用 WordNet 从一组基本术语中寻找相似术语的集合。 例如,单词'discouraged' - 潜在的同义词可能是:daunted, glum, deterred, pessimistic
部署 Word Add in 时,发布没有错误。复制文件后出现以下错误。 我没有太多事情要做。这是堆栈跟踪。 ************** Exception Text **************
我需要一个 Java 正则表达式来匹配除某个单词之外的任何单词,同时包含另一个单词。 例如字符串中不能包含Apple,但必须有Peach。 Apple and Peach - Not match Pe
我是一名优秀的程序员,十分优秀!