WordNet_的同义词典实现同义词检索(C#版)
基于中文WordNet的中英文词语相似度计算
基于中文WordNet的中英文词语相似度计算吴思颖;吴扬扬【摘要】介绍一种基于中文WordNet的中英文词语相似度计算方法.在WordNet同义词集的上下位关系图中,引入了距离、密度、深度3个因素来估计同义词集之间的相似度,采用一个自适应的方案来解决候选同义词集组合的权重和取舍问题.实现了一个可以计算英-英、汉-英、汉-汉词语之间相似度的算法,所得结果比较符合人们对词语的理解.【期刊名称】《郑州大学学报(理学版)》【年(卷),期】2010(042)002【总页数】4页(P66-69)【关键词】中文WordNet;词语相似度;语义相似度【作者】吴思颖;吴扬扬【作者单位】华侨大学计算机科学与技术学院,福建,厦门,361021;华侨大学计算机科学与技术学院,福建,厦门,361021【正文语种】中文【中图分类】TP391Wo rdNet是按语义关系组织的,它使用同义词集合代表概念,词汇关系在词语之间体现,语义关系在概念之间体现,一个词语属于若干个同义词集,而一个同义词集又包含若干个词语.由于语义关系是一种词义之间的关系,而词义是用同义词集合来表示,因此很自然地把语义关系看作为同义词集合之间的关系. WordNet中词汇概念的语义关系主要包括上下位、同义、反义、整体和部分、蕴含、属性、致使等不同的语义关系.中文Wo rdNet建立在普林斯顿大学开发的英文Wo rdNet词典的原理基础上,实现了一个约118 000中文词和115 400同义词集的中文-中文词典的功能,是使用了现有的英-汉词典库对英文WordNet中的词进行手工翻译而得到的.它同样也具有同义词、同等词、泛词等在英-英词典中提供的功能.词语相似度的计算方法主要分为两类[1-2]:一类方法称为基于上下文的方法,它利用大规模的语料或词语定义,收集统计数据,来评估词汇语义相似度;另一类是利用词典中的关系和层次结构,如概念之间的上下位关系和同位关系来计算词语的相似度.文献[3]利用了同义词集在WordNet中的最短距离和这条路径的转向次数来计算词语的相似度;文献[4]引入了本体和语料库,以2个同义词集的公共子结点的范围和公共的信息来计算其相似度;文献[1]从WordNet中提取同义词并采取向量空间方法计算英语词语的相似度.但由于Wo rdNet词典的语言限制,它们都局限于英文词语的语义相似度分析.文献[5]讨论了义原的相似度计算方法、集合和特征结构的相似度计算方法,并在此基础上提出了利用《知网》进行词语相似度计算的算法.本文利用中文Wo rdNet,在Wo rdNet同义词集的上下位关系图中,引入了距离、密度、深度3个因素来估计同义词集之间的相似度,用一个自适应的方案来解决候选同义词集组合的权重和取舍问题,设计并实现了一个能计算英-英、英-汉、汉-汉词语之间相似度的算法,所得结果比较符合人们对词语的理解.要计算2个词语之间的相似度,首先需要分别查出这2个词语所属的所有同义词集,并两两组合计算其相似度,最后根据这些同义词集组合的相似度计算出2个词语之间的相似度.下面分别介绍同义词集和词语的相似度计算.在WordNet中,同义词集(synset)之间的上下位关系形成了一个图结构,每个synset有0个或若干个上位和下位synset.因此,基于以下原则来计算同义词集之间的相似度[6]:1)在上下位关系图中,任意2个synset结点的距离越远,语义相似度越小.2)图中结点所处的位置密度越高,说明该局部的词义划分越细,相似度越低.3)在上下位关系图中相同距离的2个synset结点,所处的层次越深,描述的事物越具体,因此相似度越大.引入距离因子、密度因子、深度因子来衡量同义词集之间的相似度.距离因子σ计算公式为其中,lenth为2个synset之间的距离,θ为阈值参数.距离越大,σ值就越小,当距离大于阈值θ时,距离因子为0.密度越大,语义相似度越低.密度的计算可从局部结点的个数入手,具体方法为:分别从2个当前结点出发向上走3层,每一层的结点个数分别记PN1,PN2,PN3.期间2个结点若相遇,则终止,并将其上层结点数计为0,最终计算局部结点个数PN为其中,PN1是当前结点所在层次的结点个数,PN2,PN3依次为其上层结点个数.则密度因子φ为PN值越大表示密度越大,密度因子越小,且PN≥1,使得0<φ≤1.此外,深度越深,语义相似度越大.深度因子ω的计算公式为其中,dep th为该节点的深度,Ed为整棵语义树中所有结点的平均深度.即当结点的深度大于均值时,其深度因子为正,否则为负.综合考虑距离、密度、深度3个因素,则2个同义词集之间的相似度为若sim>1,则取sim=1.-φ和-ω分别为2个词的密度因子和深度因子的均值;α和β分别为密度因子和深度因子的权重.由于每个词语有一个或多个词义(sense),即它属于若干个同义词集,因此采用如下步骤计算2个词语之间的相似度:1)用联合查询语句在中文Wo rdNet词典数据库的各个翻译版本中,查找出被比较的词(英文单词或中文词语)所有可能出现的同义词集的id.2)将中文单词所属同义词集的标识synset_id转换为对应的英文同义词集的synset_id.3)令词a有m个词义(属于m个同义词集),词b有n个词义,即a,b所属的同义词集有m×n对组合.计算这m×n对同义词集的相似度,并排序.4)从大到小排序后,第1对同义词集所占的比重最大,令其权重为ρ,则第2对同义词集所占的权重为剩余比重×ρ,以此类推.设置一个阈值参数δ(0<δ<1),计算过程中仅考虑所有组合的前百分比阈值,如δ=0.3,则仅计算所有同义词集组合相似度最大的前30%.在实际操作中,当同义词集组合个数较多时,常出现1对或前几对同义词集的相似度非常大,因此首对权重ρ不宜过大,否则将失去综合权衡的意义.为了能够综合考虑被选取的同义词集组合的影响力,考虑根据选取的同义词集组合的数量来调节各组合所占的权重.因此,提出了一个根据同义词集组合个数num自适应调节参数ρ的公式,使得ρ∈[0.5,0.9],即当入选的同义词集组合个数num越小,首对同义词集的权重ρ越高(最大0.9),而ρ值随num的增加而递减(最小0.5),计算公式为其中,num=m×n.根据上述方法,实现了一个基于中文WordNet的词语相似度计算程序模块.在实验中,根据多次尝试中取得的经验,将文中提到的几个参数设置如下:距离因子中的阈值参数θ=7;深度因子中所有结点的平均深度经计算得Ed=8.624 3;密度因子权重α=0.1;深度因子权重β=0.1;同义词集组合前百分比阈值δ=0.2,即取相似度最大的前20%的组合考虑.对于词语相似度计算结果的评价,最好是放到实际的系统中(如本课题后期研究的数据空间的进化将利用此结果数据模式进行匹配),观察不同的计算方法对系统性能的影响,在条件不许可的情况下采用人工判别的方法.对比了文献[5]中介绍的同样能计算中文词语相似度的基于《知网》的词汇语义相似度计算方法,对比结果如表1所示,方法1为文献[5]中介绍的方法,方法2为本文介绍的基于中文WordNet的相似度计算方法.对比表1结果,方法2的实验结果与人们的理解比较一致,方法1得到的相似度与人们的理解相对差别大一些.例如,方法1对“论文”、“文章”、“文献”这样词义接近的词汇的相似度估计相差巨大,因为方法1中计算词语相似度时采用了2个词之间各个概念相似度的最大值.而方法2计算结果中,“论文”与“文章”、“文献”的相似度比较接近,都在0.91以上,因为方法2对词语各个概念(同义词集)的各种组合采取了一种动态加权和的办法,能自适应地调整组合之间的权重.本算法的另一个独特之处是兼容中英文双语的相似度计算,表2给出另外一些测试结果.从实验结果可以看出,“父亲”和“father”同为正式用语,相似度高于“父亲”和“爸爸”,而同为口语的“爸爸”和“dad”也有较高的相似度;“中国”和“亚洲”的相似度高于“中国”和“欧洲”也是较为合理的;“猫”直接类属于“动物”,因此“猫”和“动物”的相似度大于“猫”和“狗”的相似度.总体上看,该方法得到的大部分结果是较为准确的.本文主要分析了中文WordNet的体系结构,根据影响词语相似度的距离、密度和深度3个因素,定义了完整的同义词集之间的相似度算法,并采用了自适应的方法对被查词语的同义词集组合进行了取舍和权重定义.最后,实现了一个计算中英文词语相似度的算法,并进行了实验.测试结果表明:本方法得到的结果与人工判别结果基本一致,比基于《知网》的词汇语义相似度计算方法更符合人们的理解.下一步研究将把词语相似度算法应用于数据空间管理系统的进化和检索中,使数据空间的查询结果更为准确有效.【相关文献】[1] 荀恩东,颜伟.基于语义网计算英语词语相似度[J].情报学报,2006,25(1):43-48.[2] Sebti A,Barfrous A A.A new wo rd sense similarity measure inWordNet[C]//Proceedingsof the International M ulticonference on Computer Science and Information Technology.Washinton D C:IEEE Computer Society,2008:369-373.[3] Hirst G,St-Onge D.Lexical chains as rep resentationsof context fo r the detection and correction of malap ropisms[M]// WordNet:an Electronic Lexical Database.Cambridge M A:M IT Press,1998.[4] Resnik ing information content to evaluate semantic similarity in ataxonomy[C]//Proceedingsof the 14th International Joint Conference on A rtificial Intelligence.San Francisco:Mo rgan Kaufmann Publishers Inc,1995:448-453.[5] 刘群,李素建.基于《知网》的词汇语义相似度计算[J].计算语言学及中文信息处理,2002,7(2):59.[6] 张承立,陈剑波,齐开悦.基于语义网的语义相似度算法改进[J].计算机工程与应用,2006,42(17):165-166.。
基于WordNet的概念语义相似度研究
基于WordNet的概念语义相似度研究
李熙;徐德智
【期刊名称】《湖南科技学院学报》
【年(卷),期】2008(29)12
【摘要】WordNet 是普林斯顿大学的一个研究项目,目标是建立英语词汇及其词法关系的数据库,这将促进数据互通性、信息搜寻和检索、自动推理和自然语言处理.基于该共享知识本体,提出了一种计算两概念语义相似度的方法.根据该方法实现了一个计算程序模块,并将计算结果同人类的主观判断进行了比较,验证了该方法的有效性.该研究工作可以在面向Web的知识检索领域中得到应用,还可以为本体的相关研究提供一定的理论基础.
【总页数】2页(P115-116)
【作者】李熙;徐德智
【作者单位】中南大学,信息科学与工程学院,湖南,长沙,410083;永州职业技术学院,湖南,永州,425100;中南大学,信息科学与工程学院,湖南,长沙,410083
【正文语种】中文
【中图分类】TP312
【相关文献】
1.基于WordNet的语义相似度算法研究 [J], 杨家奇;哈斯
2.WordNet中基于IC的概念语义相似度算法 [J], 王艳娜;周子力;何艳
3.WordNet中概念语义相似度IC参数模型研究 [J], 边振兴
4.基于WordNet的概念格间语义相似度计算方法 [J], 伍振兴
5.基于WordNet的概念语义相似度的计算方法 [J], 孙丽莉;张小刚
因版权原因,仅展示原文概要,查看原文内容请购买。
一种基于WordNet语义相似度的改进算法
一种基于WordNet语义相似度的改进算法作者:田姗来源:《数字技术与应用》2013年第08期摘要:随着信息的快速发展,计算词语语义相似度在很多领域得到了广泛应用与研究,包括信息检索,信息抽取,词义排歧,基于实例的机器翻译,文本分类等等。
本文在相关研究的基础上除了考虑路径外考虑了节点所在树中的深度和宽度,提出一种基于WordNet语义相似度的改进算法。
关键词:WordNet 语义距离语义相似度中图分类号:TP391 文献标识码:A 文章编号:1007-9416(2013)08-0113-01语义相似度计算在很多领域都有着广泛的应用,如自然语义处理,信息检索,词义排歧,文本分类以及基于实例的机器翻译等。
随着Internet技术的高速发展,语义相似度成为信息检索研究的重要组成部分。
当前语义相似度计算方法大致可以分为两类:一类是根据世界知识或者某种分类体系的方法来计算,主要是基于按照概念间结构层次关系组织的语义词典的方法,根据在这类语言学资源中概念之间的上下位关系和同位关系来计算词语的相似度;第二类是基于统计的方法,主要将上下文信息的概率分布作为词汇语义相似度的参照。
现有的研究中有的通过词结点之间上下位关系构成的最短路径计算语义相似度,文献[1-2]通过两个词的公共祖先结点的最大信息量计算语义相似度,文献[3-5]通过结合结点间的路径长度,概念层次树的深度,概念层次树的区域密度等因素综合考虑计算语义相似度。
国外很多研究者利用WordNet 中的同义词集组成的树状层次体系结构计算语义相似度。
1 WordNet简介WordNet是由Princeton 大学的心理学家,语言学家和计算机工程师联合设计的一种基于认知语言学的英语词典,它不只把单词以字母顺序排列,而且按照单词的意义组成一个“网络”。
由于包含了语义信息,所以WordNet有别于通常意义上的字典。
WordNet描述对象包括复合词、短语动词、搭配次词、成语、单词,其中单词是最基本的单位。
31中文概念词典(CCD)
下位词抽取流程 实验结果
郑州大学自然语言处理实验室
引言
同义词和下位词的发现在自然语言处理领域中 对信息检索,机器翻译等领域的研究有重要的意义。 传统的同义词和下位词的发现是基于词典知识 库,如中文概念词典,同义词词林等知识库。 随着Web的发展eb资源。 把传统的词典和Web资源各自优势进行结合实验室
3.3 互动百科
互动百科分类标签,如图4:
图4 “安全软件”互动百科分类
郑州大学自然语言处理实验室
3.4 维基百科
维基百科分类标签,如图5:
图5 “安全软件”维基百科分类
郑州大学自然语言处理实验室
郑3;S(w)+W(w) 例如:“澳大利亚”的百科内容中: 澳大利亚联邦(The Commonwealth of Australia)简称澳大利亚(Australia)。 以上内容中T(w):澳大利亚联邦,S(w):简称, W(w):澳大利亚
郑译将同室
1.5 有道翻译
有道在线翻译将同义词词汇的英语进行翻译,如图2:
图2 有道在线翻译
郑州大学自然语言处理实验室
2 同义词流程图
郑州大学自然语言处理实验室
2 同义词流程图
郑3;T(w)+S(w) 例如:“牦牛”的百科内容中: 牦牛....有“高原之舟”之称。 以上内容中W(w):牦牛,T(w):高原之舟, S(w):之称。
郑W),已合并。 以上内容中W(w):奥林匹克村,T(w):奥运村。
0.6423 0.6961 0.6961
0.3598 0.3927 0.3984
0.2530 0.2541 0.3025
0.6792 0.7072 0.7072
0.3687 0.3738 0.4106
wordnet关系词
English Chinese list of wordnet-related terms 3.3.1A 各类词网|B 词义关系|C 词类及其他术语|D 语意属性A 各类词网Bilingual Wordnet (Bi-WN) 双语词网Chinese Wordnet (CWN) 汉语词网EuroWordNet (EWN) 欧语词网WordNet (WN) 词网(特指Princeton WN)B 词义关系antonym 【反义词】antonymy反义关系autoantonymy反义多义(关系)autohyponymy下位多义(关系)hypernym【上位词】泛称词hypernymy上位关系hyponym 【下位词】特指词hyponymy 下位关系holonym整体词holonymy整体-部份关系meronym部份词meronymy部份-整体关系metonym 转指词metonymy 转指关系near-synonym 近义词near-synonymy 近义关系polysemy 【多义性】synonym 【同义词】synonymy同义关系taxonomy 分类架构troponym方式词troponymy方式关系C 词类及其他术语adjective 【形容词】adverb 【副词】agreement 【对谐】,一致性algorithm 【算法/算法】ambiguity 歧义associations 关联attributes 【属性】auxiliary verbs 助动词basic-level categories 基层范畴,底层范畴buffers 【缓冲区】case propagation 格位相沿,格位沿袭categories 范畴causative 【使动】cause relation 因果关系cause 原因change-of-state verbs 易态动词collocations 【连用语】common nouns 普通名词component-object meronyms组成部份(关系)compounds 复合词concepts概念conceptual semantic relation 概念语意关系concordances【关键词(前后文)排序】,汇编connectivity 连结性constraints 【限制】context 【语境】,上下文co-occurrence 共现count nouns 可数名词cousins in hyponyms 特指亲属,下位亲属data mining 数据挖掘database 数据库decomposition 分解derived adverbs 衍生副词descriptive adjectives 描述性形容词determiners 限定符dictionaries 辞典disambiguation 排歧distance in lexical trees 词汇树间距domain-specific knowledge 特定领域知识,领域知识encyclopedic knowledge 百科全书知识,通识知识entail 蕴涵entailment 【蕴涵】entry 词条euphemisms 委婉用法exceptions 例外factive叙实familiarity index 熟悉度索引frames 【框架】frequency 频率functional hyponymies功能性上位词functions 功能gadability具层级性gender 性别glosses 注释gradable 可分级的gradation/gradability/gradable 层级head synsets同义词集主语hierarchies 层级homographs 同形异义词,同形词idioms 【成语】intension 内涵Inter-Lingual-Index (ILI) 中介索引intransitive verbs 不及物动词IS-A relations 【IS-A关系】lexical chains 词链Lexical Conceptual Structure (LCS) 【词汇概念结构】lexical knowledge link (LKL) 词汇知识链接lexical relation 词汇关系lexical subordination 词汇从属lexical superordination词汇上属lexical tree (LexTree) 词树lexicon 【词汇库】词汇malapropism 近音误用;近音误用词markedness有标mass nouns 物质名词meaning extension 意义延伸meaning facet(s) 义面meaning 意义metaphor 【隐喻】metaphoric extension 隐喻延伸modeling 模型制作;模制models 模型morphology 构词法nano-hyponymynominalization 【名物化】noun 【名词】ontology 本体架构parsing 【剖析】;分析;解析participial adjectives 分词形容词part-of-speech (POS) 【词类】phrases 【词组】proper nouns 专有名词quantifiers 数量值questions and answers 问答repetition 重复resultative结果satellitesynsetsschema analysis 基架分析schema 基架semantic concordance (database) 语意汇编(数据库)semantic distance 语意距离semantic domain 语意范畴semantic field 【语意场】semantic opposition 对立语意semantic tags 语意标记sense disambiguation 词义厘清sense 词义subordination 【从属】stative verbs 状态/况动词synset同义词集syntactic classes 语法词类tags 【标记】thesaurus 【同义词辞典】topical clustering 主题丛聚topic 话题topic continuity话题延续training 训练;练习transitive verbs 及物动词unaccusativity非宾格;宾主格unergative verbs 唯(被)动动词;作动词verb 【动词】verb alternations 动词句型替换verbs of action 行动动词weights 加权word 【词】word association 词汇关联word distance 词义距离wordnet词网D 语意属性go topaccount 簿册addictive 嗜好物adverbial 副状affairs 事务age 年龄agent 施事agreement 条约aircraft 飞行器animal 禽兽animate 生物appearance 外观area 面积army 军队artifact 人工物aspiration 意愿attire 装束attitude 态度attribute 属性bacteria 微生物beast 走兽beneficiary 受益者bill 票据bird 禽boundary 界限building 建筑物cause 原因celestial 天体character 文字chemical 化学物classifier 单位词clothing 衣物cloud 云coagent合作施事color 颜色comment 评论community 团体component 部件computer 计算机concentration 浓度concession 让步condition 条件conjunction 并列connective 关联词content 内容contrast 对比countenance 表情crop 庄稼dampness 湿度degree 程度demeanor 风度density 密度depth 深度descriptive 描写direction 方向disease 疾病distance 距离divergence 分歧document 文书drinks 饮品duration 时段duty 责任earth 大地edible 食物electricity 电emotion 情感emphasis 强调entity 实体event 事件expenditure 费用experience 感受experiencer 经验者facilities 设施fact 事实feeling 情绪fineness 粗细fire 火fish 鱼flora 花草food 食品form 形状frequency 频率fruit 水果fund 资金furniture 家具gas 气体hardness 硬度height 高度house 房屋human 人humanized 拟人ice 冰implement 器具inanimate 无生物information 信息insect 昆虫institution 机构instrument 工具kind 类型knowledge 知识land 陆地language 语言law 律法length 长度letter 信件lights 光liquid 液体livestock 牲畜location 位置location 处所machine 机器manner 方式mark 标志material 材料means 手段measurement 量度medicine 药物mental 精神metal 金属method 方法modality 语气modifier 描述money 货币music 音乐natural 天然物negation 否定news 新闻occupation 职位organization 组织paper 纸张part 部分particle 助词partof部分patient 受事phenomena 现象place 地方plans 规划plant 植物possession 领属possessor 领有者posture 姿势price 价格problem 问题process 过程property 属性publications 书刊purpose 目的quality 质量quantity 数量range 幅度readings 读物,读数reason 道理regulation 规则relationship 关系restrictive 限定result 结果rights 权利room 房间scene 景象scope 范围sequence 次序sex 性别shape 物形ship 船situation 状况size 尺寸sky 空域slope 坡度software 软件sound 声音source 来源space 空间speed 速度state 状态static 静态stationery 文具stone 石style 风格supplement 递进symbol 符号system 系统target 目标taste 味道temperature 温度tense 时态,时式text 语文,文本thickness 厚度thing 万物thinking 思想thought 念头thunder 雷tightness 松紧time 时间tool 用具transition 转折treasure 珍宝tree 树unit 单位vegetable 蔬菜vehicle 交通工具volition 意向,意志(力)volume 容积water 水waters 水域wealth 财富weapon 武器weather 气象weight 重量whole 整体width 宽度wind 风wood 木。
WordNet2.1 功能简介
love, passion -- (any object of warm affection or devotion; "the theater was her first love"; "he has a passion for cock fighting";)
=> object -- (the focus of cognitions or feelings; "objects of thought"; "the object of my affection")
*> Somebody ----s something
*> Somebody ----s somebody
Sense 2
love, enjoy -- (get pleasure from; "I love cooking")
EX: They love him to write the letter
Sense 3
HAS PART: trait -- (a distinguishing feature of your personal nature)
HAS PART: character, fiber, fibre -- (the inherent complex of attributes that determine a persons moral and ethical actions and reactions; "education has for its object the formation of character"- Herbert Spencer)
love -- (be enamored or in love with; "She loves her husband deeply")
基于WordNet的英语词语相似度计算
3.1:本文的工作目标 我们相似度计算的最终目标是要服务于一个实用的英语信息检索系统。在信息检索中,
用户的 query 一般都很短,我们能获得的信息很少。虽然,在英语中我们根据用户的 query 一 般可以判断出检索词的词性。但对于多义词,我们往往无法判断出用户到底想检索含有哪个 义项的文档,比如用户输入“bank”,我们很难判断出用户是想查询关于银行方面的文档还是 查询关于河岸方面的文档。在这儿,我们引入相似度计算的方法,目的是为信息检索提供一 个以检索词为中心按照相似度从高到低排列的相似词语的集合,根据这个集合我们可以向用 户返回检索结果或进行问题扩展。我们的方法区分词语的不同词性,对多义词,我们不区分 它的不同义项,只提供一个基于 WordNet 的相似词语的集合。
2|}
1i
,
SW
2
j
)
+
i∈{1,..,|SW
2|}
| SW1 | + | SW 2 |
max
j∈{1,..,|SW
(
1|}
Similarity(SW
2i
,
SW1j )
其中: |SW1|:W1 的 sense 的个数, |SW2|:W2 的 sense 的个数。
4 实验结果及分析
我们对实验结果进行了人工的评价,评价方法主要是对计算得到的语义相似度的序列和
WordNet 现在已经发布了 2.0 版本,本文的实验是基于 1.6 版本进行的。Version 1.6 主要
包括名词、动词、形容词和副词四类实词,虚词不予考察。在上述四类实词中,WordNet 着重 描写的是名词和动词。WordNet 中词汇概念的语义关系主要包括:上下位、同义、反义、整体 和部分、蕴含、属性、致使等。WordNet Version 1.6 种描写了四类实词 99643 个概念节点和超 过 5000000 个语义关系,形成了一张庞大的概念语义网络。
同义词英语词典
同义词英语词典
以下是一些常见的同义词英语词典:
1. Merriam-Webster's Synonym Finder: 这是一本广泛使用的同义词词典,它提供了丰富的同义词和反义词词汇,并且可以区分词的褒贬义和正式程度。
2. : 这是一个在线同义词词典,提供了大量的同义词和反义词词汇,并且可
以通过单词的不同形式进行查找。
3. WordNet: WordNet 是一个用于英语词汇研究的计算机程序和在线数据库,它可以查找一个单词的同义词、反义词和相关的词汇。
4. Oxford American Writer's Thesaurus: 这本词典包含了大量的同义词和反义词词汇,以及相关的例句和用法说明。
5. Longman Dictionary of Synonyms and Antonyms: 这本词典提供了大量的同义词和反义词词汇,并且可以区分词的褒贬义和正式程度。
请注意,虽然这些词典可以提供一些有用的同义词,但是每个单词都有许多不同的含义和用法,因此在使用同义词时需要谨慎考虑语境和用法。
wordnet介绍
)作为一般词典的WordNet (WordNet as a dictionary)· WordNet跟传统的词典相似的地方是它给出了同义词集合的定义以及例句。
在同义词集合中包含对这些同义词的定义。
对一个同义词集合中的不同的词,分别给出适合的例句来加以区分。
(七)WordNet中的关系(relations in WordNet)·不同句法词类中的语义关系类型也不同,比如尽管名词都动词都是分层级组织词语之间的语义关系,但在名词中,上下位关系是hyponymy关系,而动词中是troponymy关系;动词中的entailment(继承)关系有些类似名词中的meronymy(整体部分)关系。
名词的meronymy关系下面还分出三种类型的子关系(见“WordNet 中的名词”部分)。
(八)网球问题(the tennis problem)· WordNet是基于同义性和反义(对义)性来描述词语和概念之间的各种语义关系类型的。
由于WordNet的注意力不是在文本和话语篇章水平上来描述词和概念的语义,因此WordNet中没有包含指示词语在特定的篇章话题领域的相关概念关系。
例如,WordNet中没有将racquet(网球拍)、 ball(球)、net(球网)等词语以一定方式联系到一起。
Roger Chaffin在一封私人信笺中,曾把这类问题称为“tennis problem”(网球问题),指的就是如何把racquet、ball、net、court game (场地比赛);或者把physician(内科医生)跟hospital(医院)联系到一起。
这对电子词典来说,是一个挑战。
已经有一些相关的研究工作在探索如何从WordNet 中包含的词汇和概念之间的语义关系,来推导出话题信息。
Hirst和St-Onge描述了一种所谓的“词汇链”(lexical chain)的应用方法。
“词汇链”是在基于名词的语义关系构成的上下文中的名词的序列。
word的同义词
word的同义词word表单词; 话语; 诺言的意思,那么你知道word的同义词有哪些吗?接下来小编为大家整理了word的同义词,希望对你有帮助哦!word的同义词辨析:word, vocabulary, language, term, lexicon这些名词均有"文字,词,语言"之意。
word :普通用词,指语言的最小单位的单词、字,也可指话、整句话或一段话。
vocabulary :集合名词,指词汇、语汇或词汇量。
language :普通用词,指国家、民族或种族内部使用,已经系统化的语言。
term :指有特定意义的词,词语或术语。
lexicon :指某种语言、某人或某一知识领域的全部词汇。
词组习语:be as good as one's word1. 信守诺言have a word1. 简短地和某人说话我只想和他说一两句话。
I'll just &B{have a word with} him.have a word in someone's ear1. 和某人咬耳朵;和某人私下谈;私下警告某人in other words1. 换句话说,也就是说keep one's word1. 守信,遵守诺言a man/woman of his/her word1. 守信的人,遵守诺言的人(on/upon) my word1. 我敢保证;说实在话(表示惊讶或强调)说真的,你到这儿真快!。
my word, you were here quickly!.put something into words1. 用言语表达他感到些许无法用言语表达的失望之情。
he felt a vague disappointment which he couldn't put into words.put words into someone's mouth1. 硬说某人说过某些话take someone at their word1. 相信某人说的话是真的take the words out of someone's mouth1. 先说出某人想讲的话take someone's word (for it)1. 轻信某人的话too —— for words1. (非正式)很,极绕着路走上一圈真是乏味。
WordNet简介
WordNet的词汇组织结构
➢同义词集(Synsets)
Example:
❖ 地球绕着太阳转, 自然会有寒来暑往的四季交替 ❖ 自然奥秘 {自然、必然、一定、必定} {自然、天然}
B.4
WordNet的词汇组织结构
词汇(Words) 、同义词集、语义(Senses)的数量
POS Unique Strings Synsets Total Word-Sense Pairs
Noun 109195
75804
134716
Verb
11088
13214
24169
Adjective 21460
18576
31184
Adverb 4607
3629
5748
Totals 146350 111223
195817
B.5
WordNet的词汇组织结构
多义词信息(1)
词 性 单义词和语义
名词
94685
动词 形容词
5920 15981
副词
3820
总计
120406
多义词
14510 5168 5479 787 25944
多义词语义
40002 18221 15175 1900 75298
B.6
WordNet的词汇组织结构
多义词信息(2) 词 性 平均词义(包括单义词) 平均词义
名词
1.23
2.75
动词
B.18
WorNet 中词语间的关系
动词蕴涵关系(entailment) 、动词的上位关系 (hypernymmy) 、方式关系(troponymy)、因果关系 (cause relation)
查找英语单词的同义词反义词的方法(一)
查找英语单词的同义词反义词的方法(一)查找英语单词的同义词反义词概述在英语学习和写作过程中,寻找合适的同义词和反义词可以有效提升文章的表达和语言的丰富性。
下面列举了几种常用的方法来帮助你查找英语单词的同义词和反义词。
1. 使用在线词典和工具•英汉-汉英词典:可在词典软件或在线词典网站上查找英文单词,并找到同义词和反义词。
常用的在线词典有有道词典、金山词霸等。
•单词同义反义词查询网站:利用专门的词库和算法,这些网站可帮助你快速查找单词的同义词和反义词。
例如、等。
2. 使用专业语料库和工具•语料库查询工具:许多大型语料库和翻译公司提供在线查询工具,可通过输入单词或词组快速获取其同义词和反义词。
这些工具通常基于真实语言使用情况,因此很适合在写作时查找同义词和反义词。
•使用语言处理软件:一些专业的语言处理软件(如WordNet)提供全面的同义词和反义词查询功能,你可以输入单词并获得相关的词汇串联,帮助你寻找更多的同义词和反义词。
3. 利用上下文和联想在查找同义词和反义词时,你可以利用上下文和联想,通过主题和相关词汇找到合适的词汇替换。
例如: - 上下文:观察文章或句子中的其他词汇,根据语境寻找与之相关的同义词或反义词。
例如,在描述阳光明媚的天气时,可以使用”bright”、“sunny”等同义词。
- 联想:将单词的概念或特点与其他相关词汇联系在一起,以找到同义词或反义词。
例如,“big”的同义词可以是”huge”,反义词可以是”small”。
4. 使用词汇扩展工具有些工具和软件提供词汇扩展功能,帮助你在查找同义词和反义词时获得更多的选择。
例如,通过输入一个单词,词汇扩展工具会生成与其相关的词汇列表,包括同义词和反义词。
5. 注重阅读和积累积极阅读英文文章和书籍,通过上下文中的同义词和反义词,扩大自己的词汇量和语言表达能力。
同时,建立并积累个人的词汇库,记下学到的同义词和反义词,以备日后使用。
总结查找英语单词的同义词和反义词是提升写作能力和语言表达的重要一步。
wordnet使用教程
Wordnet是一个词典。
每个词语(word)可能有多个不同的语义,对应不同的sense。
而每个不同的语义(sense)又可能对应多个词,如topic和subject在某些情况下是同义的,一个sense中的多个消除了多义性的词语叫做lemma。
例如,“publish”是一个word,它可能有多个sense:1. (39) print, publish -- (put into print; "The newspaper published the news of the royal couple's divorce"; "These news should not be printed")2. (14) publish, bring out, put out, issue, release -- (prepare and issue for public distribution or sale; "publish a magazine or newspaper")3. (4) publish, write -- (have (one's written work) issued for publication; "How many books did Georges Simenon write?"; "She published 25 books during her long career")在第一个sense中,print和publish都是lemma。
Sense 1括号内的数字39表示publish以sense 1在某外部语料中出现的次数。
显然,publish大多数时候以sense 1出现,很少以sense 3出现。
WordNet的具体用法NLTK是python的一个自然语言处理工具,其中提供了访问wordnet各种功能的函数。
Wordnet研究
词网WordNet研究1——之初始接触WordNet® is a large lexical database of English. Nouns, verbs, adjectives and adverbs are grouped into sets of cognitive synonyms (synsets), each expressing a distinct concept. Synsets are interlinked by means ofconceptual-semantic and lexical relations. The resulting network of meaningfully related words and concepts can be navigated with the browser. WordNet is also freely and publicly available for download. WordNet's structure makes it a useful tool for computational linguistics and natural language processing.WordNet是一个英语字典。
由于它包含了语义信息,所以有别于通常意义上的字典。
WordNet根据词条的意义将它们分组,每一个具有相同意义的字条组称为一个synset(同义词集合)。
WordNet为每一个synset提供了简短,概要的定义,并记录不同synset之间的语义关系。
在WordNet中,名词,动词,形容词和副词各自被组织成一个同义词的网络,每个同义词集合都代表一个基本的语义概念,并且这些集合之间也由各种关系连接。
(一个多义词将出现在它的每个意思的同义词集合中)。
在WordNet的第一版中(标记为1.x),四种不同词性的网络之间并无连接。
同义词检索
同义词检索同义词检索是词语的一种检索形式,也可以称之为词形检索。
它源自中文阅读技巧,能够帮助读者更清晰地理解文章,特别是当文章内容复杂时,遇到生词或不熟悉的词语时尤其有用。
同义词检索技术使用对应的搜索词语,替换原文中的不太熟悉的词语,从而更清楚地理解文章内容。
同义词检索的技术以及应用,最早可以追溯到20世纪50年代,在当时,由于计算机技术的萌芽,有一种新的技术可以将文本收集到数据库中,并使用数字代码对文本进行检索。
因此,这是最早的一种“同义词检索”技术。
随着语言学、计算机科学和人工智能技术的发展,同义词检索技术也在不断演进和改进,现在已经成为文本检索的一种有效方法,并被广泛应用在文献检索,知识检索,自然语言处理,搜索引擎等多个领域。
同义词检索的原理很简单,它是通过对文本中的某个词语进行替换,从而改变文本中词语含义,使文本内容变得更加清晰。
类似地,同义词检索也是一种替换技术,它通过改变文本中的词语,来改变文本的含义,从而更好地理解文本的内容。
同义词检索技术最主要的应用领域是搜索引擎,使用同义词检索可以提高搜索引擎的检索效率,使用不同的同义词可以检索到更多更有价值的信息。
此外,同义词检索也在其他多个领域有广泛应用,比如文献检索,专利检索,政府信息检索,海量文本分析,自然语言处理,知识检索,网络数据挖掘等等。
在中文阅读技巧中,同义词检索也占有重要的位置,它能帮助读者更好地理解文章,特别是当文章内容复杂时,同义词检索可以快速地替换不熟悉的词语,从而使文章内容变得更加清晰易懂。
在实际应用中,同义词检索需要根据文本的不同语种、文体、领域特点,以及不同文本类型,从文本中挑选出有价值的同义词,从而使其更有效、更精准地达到目的。
总之,同义词检索是一种很有用的技术,它不仅可以改善文本检索能力,还能帮助读者更清楚、更精准地理解文章内容,缓解读者的阅读难度,提升阅读效率。
Wordnet简介
Wordnet是一个WordNet是一个由普林斯顿大学认识科学实验室在心理学教授乔治·A·米勒的指导下建立和维护的英语字典。
在WordNet中,名词,动词,形容词和副词各自被组织成一个同义词的网络,每个同义词集合都代表一个基本的语义概念,一个多义词将出现在它的每个意思的同义词集合中。
WordNet是按语义关系组织的,其语义关系有以下几类:(1)同义关系。
WordNet最重要的关系就是词的同义关系,因为判断词这种关系的能力是在词汇矩阵中表达词义的先决条件。
Wordnet中根据替换原则定义同义词:如果两种表达方式在语言文本中相互替代而不改变其真值,则这两种表达就是同义的。
因而,WordNet分成名词,动词、形容词和副词几大类。
不同词类中的语义关系类型也不同。
比如尽管名词都动词都是分层级组织词语之间的语义关系,但在名词中,上下位关系是hyponymy关系,而动词中是troponymy关系;动词中的entailment(继承)关系有些类似名词中的meronymy (整体部分)关系。
名词的meronymy关系下面还分出三种类型的子关系(见“WordNet中的名词”部分)。
(2)反义关系。
反义词是一种词形间的词汇关系,而不是词义间的语义关系。
反义关系为WordNet中的形容词和副词提供了一种中心组织原则。
(3)上下位关系。
上下位关系具有某种限制,且是一种不对称的关系(Lyons,1977,v01.1),由下它只有唯一的上属关系,这就产生了一种层次语义结构,其中下位词位于其上属关系的下层。
下位词继承了它的上位词——更一般化概念的所有性质,并且至少增加一种属性,以区别它与它的上位词以及该上位词的其他下位词。
这种方法为WordNet中的名词提供了一种核心的组织原则。
在名词网络中,通过词语的上下位关系来计算词间的距离是WordNet 中简单常用的一种计算相似度方法。
(4)部分-整体关系(HASA)。
基于WordNet的概念格间语义相似度计算方法
v ∈ ,记 f 为 ;v a∈ ,记 r 为。 . 若V ∈/ J ,
≠ , ≠ ,且 v a∈ ,a ≠ ,a + ≠, / 则 称该 形 式 背景( 『 / , , ) 是正 则 的 。 定 义 2设 ( ∥ , , , ) 为形 式背 景 。如 果 一个 二 元组 ( , ) 满足 : ,且 : ,则 称 ( , ) 是一 个形 式 概 念 ,简
概念 格具 有 良好的 概念 与概 念之 间 的层 次结构 ,已经
Wo r d Ne t 简介
Wo r d Ne t 是 一 个 大 型 的英 语 词汇 数 据 库 ,它 来 源于 美国 P r i n c e t o n大 学 Ge o r g e A. Mi l l e r 教 授 所主 持 的 一项
于 词 汇 关系 ,是 形成 同义 词 集 的基础 。在 W o r d N e t 中, 同义关系并不是说两个词汇在任何语境下都可以相互交换 的 ,而 是指 在某 一特 定的 语境 下 ,这 两个 词可 以交 换 。 ( 2) 反义 关系 和近 似关 系是指 形容 词集 之 间的关 系 , 它是 语 义关 系 。在 W o r d N e t 中形 容词 集 的组 织结 构 主要 依靠反义关系和近似关系。形容词集是按簇 ( Cl u s t e r )
被广泛应用于软件工程 、信息检索 、数据挖掘等领域 。但 现 如今 对于 各概 念格 之 间的相 似度 计算 和 匹配的研 究 则相
对 较少 。本 文 提 出了一 种 基于 W o r d N e t 的概念 格 问语 义
相似度计算方法 ,该方法利用 Wo r d N e t 中各词汇之间的 结构 关 系 ,研究 两个概 念格 之 间的语 义相 似 度计算 ,为以 后概 念格 问 的语 义 匹配 做准 备 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
同义词检索应该很多时候会用得上的,举个简单的例子,我们搜索关键字good 的时候,与well 和fine 等的词条也可能是你想要的结果。
这里我们不自己建立同义词库,直接使用WordNet 的同义词库,本篇介绍C# 版的实现步骤,还会有续篇--Java 版。
由于Lucene 是发源于Java,所以C# 的应用者就没有Java 的那么幸福了,Java 版已经有3.0.2 可下载,C# 的版本还必须从SVN 库里:https:///repos/asf/lucene//tags/_2_9_2/ 才能取到最新的 2.9.2 的源码,二制包还只有 2.0 的。
接下来就是用VS 来编译它的,不多说。
只是注意到在contrib 目录中有 解决方案,这是我们想要的,编译 可得到三个可执行文件:1. Syns2Index.exe 用来根据WordNet 的同义词库建立同义词索引文件,同义词本身也是通过Lucene 来查询到的2. SynLookup.exe 从同义词索引中查找某个词有哪些同义词3. SynExpand.exe 与SynLookup 差不多,只是多了个权重值,大概就是同义程度好啦,有了.dll 和上面那三个文件,我们下面来说进一步的步骤:二. 下载WordNet 的同义词库可以从/3.0/ 下载WNprolog-3.0.tar.gz 文件。
然后解压到某个目录,如D:\WNprolog-3.0,其中子目录prolog 中有许多的pl 文件,下面要用到的就是wn_s.pl三. 生成同义词Lucene 索引使用命令Syns2Index.exe d:\WNprolog-3.0\prolog\wn_s.pl syn_index第二个参数是生成索引的目录,由它来帮你创建该目录,执行时间大约40 秒。
这是顺利的时候,也许你也会根本无法成功,执行Syns2Index.exe 的时候出现下面的错误:Unhandled Exception: System.ArgumentException: maxBufferedDocs must at least be 2 when enabledat .Index.IndexWriter.SetMaxBufferedDocs(Int32 maxBufferedDocs)at .Syns2Index.Index(String indexDir, IDictionary word2Nums, IDictionary num2Words)at .Syns2Index.Main(String[] args)莫急,手中有源码,心里不用慌,只要找到Syns2Index 工程,改动Syns2Index.cs 文件中的writer.SetMaxBufferedDocs(writer.GetMaxBufferedDocs() * 2*/); //GetMaxBufferedDocs() 本身就为0,翻多少倍也是白搭为writer.SetMaxBufferedDocs(100); //所以直接改为100 或大于2 的数就行重新使用新编译的Syns2Index.exe 执行上一条命令即可。
成功执行后,可以看到新生成了一个索引目录syn_index, 约3 M。
现在可以用另两个命令来测试一下索引文件:D:\wordnet>SynLookup.exe syn_index hiSynonyms found for "hi":hawaiihellohowdyhulloD:\wordnet>SynExpand.exe syn_index hiQuery: hi hawaii^0.9 hello^0.9 howdy^0.9 hullo^0.9也可以用Luke - Lucene Index ToolBox 来查看索引,两个字段,syn 和word,通过word:hi 就可以搜索到syn:hawaii hello howdy hullo四. 使用同义词分析器、过滤器进行检索相比,Java 程序员要轻松许多,有现成的lucene-wordnet-3.0.2.jar,里面有一些现在的代码可以用。
C# 的那些分析器和过滤器就得自己写了,或许我已走入了一个岔道,但也不算崎岖。
小步骤就不具体描述了,直接上代码,大家从代码中去理解:同义词引擎接口view sourceprint?ing System.Collections.Generic;02.space Com.Unmi.Searching04.{05. /// <summary>06. /// Summary description for ISynonymEngine07. /// </summary>08. public interface ISynonymEngine09. {10. IEnumerable<string> GetSynonyms(string word);11. }12.}同义词引擎实现类view sourceprint?ing System.IO;ing System.Collections.Generic;ing .Analysis;ing .Analysis.Standard;ing .Documents;ing .QueryParsers;ing .Search;ing .Store;09.ing LuceneDirectory = .Store.Directory;ing Version = .Util.Version;12.space Com.Unmi.Searching14.{15. /// <summary>16. /// Summary description for WordNetSynonymEngine17. /// </summary>18. public class WordNetSynonymEngine : ISynonymEngine19. {20.21. private IndexSearcher searcher;22. private Analyzer analyzer = new StandardAnalyzer();23.24. //syn_index_directory 为前面用Syns2Index 生成的同义词索引目录25. public WordNetSynonymEngine(string syn_index_directory)26. {27.28. LuceneDirectory indexDir = FSDirectory.Open(new DirectoryInfo(syn_index_directory));29. searcher = new IndexSearcher(indexDir, true);30. }31.32. public IEnumerable<string> GetSynonyms(string word)33. {34. QueryParser parser = new QueryParser(Version.LUCENE_29, "word", analyzer);35. Query query = parser.Parse(word);36. Hits hits = searcher.Search(query);37.38. //this will contain a list, of lists of words that go together39. List<string> Synonyms = new List<string>();40.41. for (int i = 0; i < hits.Length(); i++)42. {43. Field[] fields = hits.Doc(i).GetFields("syn");44. foreach (Field field in fields)45. {46. Synonyms.Add(field.StringValue());47. }48. }49.50. return Synonyms;51. }52. }53.}过滤器,下面的分析器要用到Lucene 应用WordNet 的同义词典实现同义词检索(C#版) 22010-07-18 10:49view sourceprint?ing System;ing System.Collections.Generic;ing .Analysis;04.space Com.Unmi.Searching06.{07. /// <summary>08. /// Summary description for SynonymFilter09. /// </summary>10. public class SynonymFilter : TokenFilter11. {12. private Queue<Token> synonymTokenQueue = new Queue<Token>();13.14. public ISynonymEngine SynonymEngine { get; private set; }15.16. public SynonymFilter(TokenStream input, ISynonymEngine synonymEngine)17. : base(input)18. {19. if (synonymEngine == null)20. throw new ArgumentNullException("synonymEngine");21.22. SynonymEngine = synonymEngine;23. }24.25. public override Token Next()26. {27. // if our synonymTokens queue contains any tokens, return the next one.28. if (synonymTokenQueue.Count > 0)29. {30. return synonymTokenQueue.Dequeue();31. }32.33. //get the next token from the input stream34. Token token = input.Next();35.36. //if the token is null, then it is the end of stream, so return null37. if (token == null)38. return null;39.40. //retrieve the synonyms41. IEnumerable<string> synonyms = SynonymEngine.GetSynonyms(token.TermText());42.43. //if we don't have any synonyms just return the token44. if (synonyms == null)45. {46. return token;47. }48.49. //if we do have synonyms, add them to the synonymQueue,50. // and then return the original token51. foreach (string syn in synonyms)52. {53. //make sure we don't add the same word54. if (!token.TermText().Equals(syn))55. {56. //create the synonymToken57. Token synToken = new Token(syn, token.StartOffset(),58. t.EndOffset(), "<SYNONYM>");59.60. // set the position increment to zero61. // this tells lucene the synonym is62. // in the exact same location as the originating word63. synToken.SetPositionIncrement(0);64.65. //add the synToken to the synonyms queue66. synonymTokenQueue.Enqueue(synToken);67. }68. }69.70. //after adding the syn to the queue, return the original token71. return token;72. }73. }74.}分析器,使用了多个过滤器,当然最主要是用到了上面定义的同义词过滤器view sourceprint?ing .Analysis;ing .Analysis.Standard;03.space Com.Unmi.Searching05.{06. public class SynonymAnalyzer : Analyzer07. {08. public ISynonymEngine SynonymEngine { get; private set; }09.10. public SynonymAnalyzer(ISynonymEngine engine)11. {12. SynonymEngine = engine;13. }14.15. public override TokenStream TokenStream(string fieldName, System.IO.TextReader reader)16. {17. //create the tokenizer18. TokenStream result = new StandardTokenizer(reader);19.20. //add in filters21. // first normalize the StandardTokenizer22. result = new StandardFilter(result);23.24. // makes sure everything is lower case25. result = new LowerCaseFilter(result);26.27. // use the default list of Stop Words, provided by the StopAnalyzer class.28. result = new StopFilter(result, StopAnalyzer.ENGLISH_STOP_WORDS);29.30. // injects the synonyms.31. result = new SynonymFilter(result, SynonymEngine);32.33. //return the built token stream.34. return result;35. }36. }37.}最后,当然是要应用上面的同义词引擎和过滤器,分析器了view sourceprint?ing System.IO;ing System.Web;ing .Index;ing System;ing .Analysis.Standard;ing .Documents;ing System.Collections.Generic;ing .Analysis;ing .Search;ing .QueryParsers;ing .Store;ing Version = .Util.Version;ing System.Collections;ing .Highlight;15.ing LuceneDirectory = .Store.Directory;17.space Com.Unmi.Searching19.{20. public class Searcher21. {22. /// <summary>23. /// 假定前面创建的同义词索引目录是d:\indexes\syn_index,24. /// 要搜索的内容索引目录是d:\indexes\file_index, 且索引中有两字段file 和content25. /// IndexEntry 是你自己创建的一个搜索结果类,有两属性file 和fragment26. /// </summary>27. /// <param name="querystring">queryString</param>28. public static List<IndexEntry> Search(queryString)29. {30. //Now SynonymAnalyzer31. ISynonymEngine synonymEngine = new WordNetSynonymEngine(@"d:\indexes\syn_index");32. Analyzer analyzer = new SynonymAnalyzer(synonymEngine);33.34. LuceneDirectory indexDir = FSDirectory.Open(new DirectoryInfo(@"d:\indexes\file_index");35. IndexSearcher searcher = new IndexSearcher(indexDir, true);36.37. QueryParser parser = new QueryParser(Version.LUCENE_29,"content", analyzer);38.39. Query query = parser.Parse(queryString);40.41. Hits hits = searcher.Search(query);42.43. //返回类型是一个IndexEntry 列表,它有两个属性file 和fragment44. List<IndexEntry> entries = new List<IndexEntry>();45.46. //这里还用到了Contrib 里的另一个Lucene 辅助组件,高亮显示搜索关键字47. SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<span style='background-color:#23dc23;color:white'>", "</span>"); 48. Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query));49.50. highlighter.SetTextFragmenter(new SimpleFragmenter(256));51. highlighter.SetMaxDocBytesToAnalyze(int.MaxValue);52.53. Analyzer standAnalyzer = new StandardAnalyzer();54.55. for (int i = 0; i < hits.Length(); i++)56. {57. Document doc = hits.Doc(i);58.59. //Any time, can't use the SynonymAnalyzer here60. //注意,这里不能用前面的SynonymAnalyzer 实例,否则将会陷入一系列可怕的循环61. string fragment = highlighter.GetBestFragment(standAnalyzer/*analyzer*/, "content", doc.Get("content"));62.63. IndexEntry entry = new IndexEntry(doc.Get("file"), fragment);64. entries.Add(entry);65. }66.67. return entries;68. }69. }70.}五. 看看同义词检索的效果看前面一大面,也不知道有几人能到达这里,该感性的认识一下,上图看真相:搜索ok,由于fine 是ok 的同义词,所以也被检索到,要有其他同义的结果也能显示出来的。