`
shuidexiongdi
  • 浏览: 73519 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

同义词查找

 
阅读更多
同义词定义:如果一个单词每个字母出现的次数和另外一个单词每个字母出现的次数一样,则称这两个单词为同义词。

根据定义,我们可以将每个单词按字母排序,得出一个值(我们称之为单词签名),如果排序后的两个单词一致,则这两个单词为同义词。

package com.shuidexiongdi.thread;

import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Vector;

public class SimilarWord {
	
	private static void sort(char[] word) {
		Arrays.sort(word);
	}
	
	@SuppressWarnings("unchecked")
	private static void sortList(List wordsList) {
		Collections.sort(wordsList);
	}
	
	private static String getKey(Map map, String value) {
		for(Object key : map.keySet()) {
			if(map.get(key).equals(value))
				return (String) key;
		}
		return null;
	}
	
	/**
	 * 记录原单词和签名的对应关系
	 * @param set
	 * @param words
	 * @return
	 */
	@SuppressWarnings({"unchecked" })
	private static Map getRelate(Set set, String[] words) {
		
		Map map = new HashMap();
		
		for(int i = words.length; i > 0; i--) {
			char[] word = words[i-1].toLowerCase().toCharArray();
			sort(word);//对每个单词进行签名(排序)
			set.add(String.valueOf(word));//把签名放入set中,同一个签名只放一次
			map.put(words[i-1], String.valueOf(word));//设置单词与其签名对应关系
		}
		return map;
	}
	
	/**
	 * 输出类似单词,换行结束
	 * @param map
	 * @param wordsList
	 */
	private static void printlnSimilarWords(Map map, List<String> wordsList) {
		for(String word : wordsList) {
			//输出相同签名的单词
			while(map.containsValue(word)) {
				String key = getKey(map,word);
				map.remove(key);
				System.out.print(key + " ");
			}
			System.out.println();
		}
	}
	
	@SuppressWarnings("unchecked")
	public static void sortWords() {
		
		String[] words = {"creat","word","creta","am","world","ma","recta","trace"};
		
		List<String> wordsList;//记录签名的排序结果
		Set wordSet = new HashSet();//记录签名的排序结果(只是中间值)
		
		Map map = getRelate(wordSet, words);
		
		wordsList = new Vector(wordSet);//包装用于排序
		sortList(wordsList);
		
		printlnSimilarWords(map, wordsList);
	}
	
	public static void main(String[] args) {
		sortWords();
	}

}
分享到:
评论

相关推荐

    中文同义词词库-同义词词库-access版本

    4. 分类清晰:词库可能按照词汇的不同类别进行了划分,如“现代汉语分类词典”,这有助于用户按需查找特定领域的同义词。 《现代汉语分类词典_11598386.rar》可能是对中文同义词词库的补充或扩展,它可能包含了更多...

    seo同义词替换(开源)

    "同义词替换"可能是一个程序文件,是这个工具的核心部分,它实现了同义词查找和替换的算法。这类算法可能基于词典库、语义分析或深度学习模型。词典库是最基础的方法,通过预先定义的词汇表进行替换;语义分析则会...

    汉语最全同义词列表,汉语同义词词典,Python源码.zip

    2. 同义词查找:编写函数或查询接口,根据输入的词汇查找其同义词。 3. 同义词替换:在文本中替换特定词汇为其同义词,以增加多样性或保护隐私。 4. 同义度计算:评估两个词之间的语义相似度,这在信息检索和文本...

    易语言源码易语言同义词替换源码.rar

    接着,对每个词汇进行同义词查找,这可能需要设计一个数据结构(如哈希表或二叉树)来存储同义词库,并实现高效的查询。最后,替换操作需要考虑到上下文,确保替换后的文本仍然保持原意,这可能需要一些自然语言处理...

    易语言同义词替换

    3. **同义词查找**:在分词后,对于每个词汇,程序需要查询词汇库以找到其可能的同义词。这通常通过哈希表或二叉搜索树等数据结构实现,以提高查找效率。 4. **同义词选择与替换**:找到同义词后,程序需要根据上...

    中文同义词词库 同义词 近义词 词库 Access版本 Excel版本.zip

    《中文同义词词库:理解与应用》 在自然语言处理和文本分析领域,同义词词库扮演着至关重要的角色。同义词是指在特定语境下具有相似或相同意义的词汇,它们能够丰富语言表达,提高文本多样性。本资源——"中文同义...

    同义词词林

    《同义词词林》是一款专门用于查找和学习同义词的软件,它极大地便利了用户在写作、编辑或研究语言时对词汇的精准选择。该软件的核心功能是提供一个全面且系统的同义词库,使得用户能快速、有效地找到各种词汇的同义...

    C# 实现文本同义词替换程序

    1. **同义词替换**: 同义词替换是NLP中的一个重要概念,旨在通过用具有相似含义的词来替换原文中的某些词,以增加文本多样性或保护原文隐私。在本程序中,目标是将文本中的特定词语替换为其同义词,从而改变文本的...

    哈工大社会计算与信息检索研究中心同义词词林扩展版

    1. **预处理**:对输入的文本进行分词,然后查找每个词在词表中的同义词集合。 2. **扩展**:将原文本中的单个词替换为其同义词集合,形成一个扩展的词汇表示。 3. **降维**:通过去除重复的或相似的词汇,减少特征...

    同义词库打包下载

    标题“同义词库打包下载”表明提供的是一个包含多个同义词典资源的集合,可用于各种NLP任务。 首先,让我们来看看压缩包中的三个文件: 1. **同义词词库.mdb**:这是一个可能使用Microsoft Access数据库格式存储的...

    易语言源码易语言同义词替换.rar

    3. **同义词查找**:根据分词结果,在词库中查找每个词的同义词。这一步可能涉及到哈希表、字典树等数据结构,用于快速定位和查找。 4. **替换策略**:确定何时以及如何进行替换。例如,可以基于词语的上下文信息,...

    中文常用词语同义词词库

    在自然语言处理(NLP)领域,理解和利用同义词是至关重要的。中文常用词语同义词词库是一个专门为了帮助处理中文文本而构建的数据资源,它包含了大量中文词汇及其对应的同义词。这个词库可以极大地提升各种NLP任务的...

    NLP同义词,疑问句,字典

    在NLP中,字典(Dictionary)是指用于存储词汇和其对应意义的数据结构,它有助于进行词性标注、同义词查找、词义消歧等任务。例如,通过查询词典,可以确定一个词的不同意思,或者找出与某词意思相近的同义词,这...

    trSynonym:土耳其语同义词查找器

    土耳其语同义词查找器。 所需的python库: 机械化 美汤4 用法: python trSynonym.py -f输入文件名 python trSynonym.py WORD INPUTFILENAME:包括 WORD 的列表,以空格或换行符分隔。 WORD:要查找其同义词的...

    罗杰斯(Rogget's)同义词词典清晰版

    - **易用性**:通过清晰的文字版格式,使得查找同义词变得更加便捷。 - **概念分类**:提供了一种按照概念分类的方式来组织同义词,帮助读者更好地理解词汇之间的关系,促进语言表达的多样性和准确性。 - **快速参考...

    Thesaurus Dictionary英文同义词电子词典 v2

    《Thesaurus Dictionary英文同义词电子词典 v2》是一款专为英语学习者和使用者设计的工具软件,旨在帮助用户查找和理解英文词汇的同义词,从而丰富语言表达,提升写作和口语水平。这款电子词典在v2版本中可能引入了...

    基于ASP的批量替换采集文章同义词ACCESS版 v1.0.zip

    3. **同义词匹配**: 对分词后的词汇进行同义词查找,匹配到合适的替代词。 4. **内容替换**: 在原文中将匹配到的词汇替换为同义词,确保语义的正确性。 5. **结果输出**: 最后,将处理后的文章返回或保存到数据库。 ...

    同义词词林(非扩展)

    - **信息检索**:通过查找关键词的同义词,提高搜索结果的相关性。 - **文本去重**:识别文本中的同义词,避免因词语差异导致的重复内容检测问题。 - **情感分析**:理解不同同义词在情感倾向上的微妙差异,提高分析...

    同义词词林 梅家驹,竺一鸣,高蕴琦,殷鸿翔

    - **特点**:《同义词词林》的一大特点是采用了详细的分类编码体系,使得大量的同义词能够被系统地组织起来,便于学习者快速查找和对比。 - **应用**:这部词典广泛应用于汉语教学、语言学研究等领域,对于提高汉语...

Global site tag (gtag.js) - Google Analytics