同义词定义:如果一个单词每个字母出现的次数和另外一个单词每个字母出现的次数一样,则称这两个单词为同义词。
根据定义,我们可以将每个单词按字母排序,得出一个值(我们称之为单词签名),如果排序后的两个单词一致,则这两个单词为同义词。
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();
}
}
分享到:
相关推荐
土耳其语同义词查找器。 所需的python库: 机械化 美汤4 用法: python trSynonym.py -f输入文件名 python trSynonym.py WORD INPUTFILENAME:包括 WORD 的列表,以空格或换行符分隔。 WORD:要查找其同义词的...
易语言同义词替换源码,同义词替换,bked哈希函数,二分查找
语言:English google chrome的一个简单的同义词查找器一个简单的同义词查找器,词库和chrome字典。双击任何网站上的任何单词以查找同义词。此扩展非常适合在编写电子邮件,文档等时快速查找替代单词。 - 双击任何...
同义词直接从您的终端查找15种不同语言的同义词。 同义词是一个小型实用工具,可直接从终端中快速查找同义词。 该脚本正在查询thesaurus.com API。 languag同义词列表直接从您的终端查找15种不同语言的同义词。 同义...
绝对足够4万多条同义词,自己可以下载了复制进WORD查找标点,号替换为|等一会就会显示替换数值,此文件是本人整理过了之前一直自己用的,现在拿出来分享给大家,8分绝对物有所值,下载不后悔,希望可以帮到大家,祝大家网赚...
同义词.app 检测论文中过度使用的单词并推荐同义词的程序。提交论文实时重新加载如何使用它将您即将完成的论文草稿粘贴到文本字段中,然后单击“检查”。 排名前十的违规者将按照从过度使用到最不过度使用的顺序排列...
前端项目-cinnamon.js,肉桂可以减轻命名的痛苦。它是一个脚本,允许用户使用浏览器内置的查找功能,通过同义词查找链接、图像和其他内容。
为了确保数据的一致性,将人们输入的值限制在标准术语的受控词汇表中,并能够使用通用同义词查找这些标准是很有用的。 这在使用代码表和外键的关系数据库中很容易实现,但是在您拥有多个数据库的世界中或在微服务...
直接从您的终端中查找15种不同语言的同义词。 同义词是一个小型实用工具,可直接从终端中快速查找同义词。该实用程序正在查询 API。 支持的语言列表: en, fr, cs, el, es, da, de, hu, it, no, pl, pt, ro, ru, sk...
绝对足够4万多条同义词,自己可以下载了复制进WORD查找标点,号替换为|等一会就会显示替换数值,此文件是本人整理过了之前一直自己用的,现在拿出来分享给大家,8分绝对物有所值,下载不后悔,希望可以帮到大家,祝大家网赚...
第二部分是同义词库,显示输入词的同义词。 第三部分是词汇游戏,旨在提高和测试您的词汇量。 VocabWidener 是独立于语言的,这意味着任何语言及其单词、定义和同义词都可以存储到系统中。 词典允许您查找单词的...
词库:同义词选项添加到右键菜单(+城市词典) *突出显示他们的同义词 **没有广告,没有跟踪,没有混乱添加到浏览器 新:修正了所有报告的错误 +点击一个同义词来替换选定的单词 这个真棒词库扩展增加了同义词的...
MultiWordNet-Simple 原始一个分支,适用于 SQLite3 数据库和文本文件。...必须依靠 MySQL 实例进行简单的引理到同义词查找并不是很方便……所以,不客气。 数据导出 原始的 MultiWordNet MySQL 查询被手动处理为标准
查找类似的汉字,同音异义词,同义词! 该解决方案由以下列出的几个模块组成。 模组 聚合器 这是一个控制台应用程序,它结合了多个词典以及数据,并生成各种聚合数据,这些数据可随时在后端使用。 基本上只运行一...
它在应用程序窗口中添加了一个额外的面板,翻译光标下的内容,并帮助查找单词的同义词。 该插件使用谷歌翻译服务。 功能 光标下句子的翻译和结果的反向翻译。 光标下单词的翻译。 显示单词同义词及其翻译的列表。...
查找单词的同义词 ...这个简单而强大的扩展使同义词查找变得轻而易举。 您选择一个单词,Synonyms Deluxe会返回一个英语同义词列表,按其类型分类。 丰富的词典数据库和令人愉悦的用户体验。 支持语言:English
这是一个插件,用户可以在可视模式下的光标或短语下查找任何单词的同义词,并将其替换为用户选择的同义词。 它还接受来自人工输入的单词/短语以进行同义词检查。 注意:目前,此插件仅支持英语(en),中文(cn)...
基于excel vba的英语单词同义词自动查找程序.可实现按照任意相似互相匹配
选择一个短语,按一个热键,Bodine 可以执行以下操作: 在 Google 图书上搜索选择的正确性在上下文中查找同义词并使用 Google 图书获取它们各自的正确性匹配上下文中的通配符(即“所见即所得”) 返回选定文本的...
一个简单的ReST服务器,用于查找威胁因素(按名称,同义词或UUID)并返回有关已知威胁因素的MISP星系信息。 要求 Python 3.6 龙卷风 安装 git clone https://github.com/MISP/threat-actor-intelligence-server cd...