java实现近义词维护

题目要求:一、近义词维护
给定接口,设置两个单词相互近义。近义词具有相互传递性,如果A和B为近义词,B和C是近义词,那么A、B、C都为近义词。要求提供接口,查询给定的两个但是是否是近义词关系。并且能提供接口清除所有的近义词关系。
接口说明
/**
 * 设置2个单词为近义词
 * @param word1 单词一
 * @param word2 单词二
 * @return 0为成功,-1为失败或其他异常
 */
public int setSynonyms(String word1, String word2)

/**
 *判断2个单词是否为近义词(同一单词视为近义词)
 *@param word1 单词一
 *@param word2 单词二
 *@return 为近义词返回true,否则返回false
 */
public boolean isSynonyms(String word1, String word2)

/**
 * 清除单词之间的近义词关系
 */
public void clearRelations()

程序如下:首先设定A与B的近义词关系,再设定B与C的近义词关系,B与C以及A与C之间都是近义词关系,所以前两次为true,当执行clear方法后,map清空,最后一次打印为false
 1 import java.util.HashMap;
 2 import java.util.Iterator;
 3 import java.util.Map;
 4 import java.util.Scanner;
 5 public class Synonyms {
 6     private static Boolean isSyn = false;
 7     static Map<String, String> map = new HashMap<String, String>();
 8     public static void main(String[] args) {
 9         Scanner scan = new Scanner(System.in);
10         String line = scan.nextLine();
11         String[] str = line.split(" ");
12         System.out.println(setSynonyms(str[0], str[1]));
13         String line2 = scan.nextLine();
14         String[] str2 = line2.split(" ");
15         System.out.println(setSynonyms(str2[0], str2[1]));
16         System.out.println(isSynonyms(str2[0], str2[1]));
17         System.out.println(isSynonyms(str[0], str2[1]));
18         clearRelations();
19         System.out.println(isSynonyms(str2[0], str2[1]));
20         scan.close();
21     }
22
23     public static int setSynonyms(String word1, String word2) {
24         map.put(word1, word2);
25         map.put(word2, word1);
26
27         if (word1 != "" & word2 != "") {
28             // isSyn = true;
29             return 0;
30         } else
31             return -1;
32
33     }
34
35     public static boolean isSynonyms(String word1, String word2) {
36         if (!map.containsKey(word1)) {
37             isSyn = false;
38         }
39         if (map.containsKey(word1)) {
40             for (String key : map.keySet()) {
41                 for (int i = 0; i < key.length(); i++) {
42                     String value = map.get(word1);
43                     String value2 = map.get(value);
44                     if (value2.equals(word2)) {
45                         isSyn = true;
46                     } else if (word2.equals(map.get(word1)))
47                         isSyn = true;
48                 }
49             }
50
51         } else
52             isSyn = false;
53         return isSyn;
54     }
55
56     public static void clearRelations() {
57         Iterator it = map.keySet().iterator();
58         String key = null;
59         while (it.hasNext()) {
60             key = it.next().toString();
61             it.remove();
62
63         }
64     }
65 }
时间: 2024-08-02 17:30:04

java实现近义词维护的相关文章

句子逆序,近义词维护,数字颠倒,蛇形矩阵

一.句子逆序描述:  将一个英文语句以单词为单位逆序排放.例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 接口说明 /**  * 反转句子  *   * @param sentence 原句子  * @return 反转后的句子  */ public String reverse(String sentence); 1 public class StringReverse { 2 public static

OJ初级-句子逆序,近义词维护,数字颠倒,蛇形矩阵

备注:所有基础的练习题都不能借助相应功能的工具函数 一.句子逆序描述:  将一个英文语句以单词为单位逆序排放.例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 接口说明 /**  * 反转句子  *   * @param sentence 原句子  * @return 反转后的句子  */ public String reverse(String sentence); 二.近义词维护 给定接口,设置两个单词相互

基于WordNet的英文同义词、近义词相似度评估及代码实现

作者:max_xbw 1.确定要解决的问题及意义 在基于代码片段的分类过程中,由于程序员对数据变量名的选取可能具有一定的规范性,在某一特定业务处理逻辑代码中,可能多个变量名之间具有关联性或相似性(如“trade”(商品交易)类中,可能存在“business”,“transaction”,“deal”等同义词),在某些情况下,它们以不同的词语表达了相同的含义.因此,为了能够对代码片段做出更加科学的类别判断,更好地识别这些同义词,我们有必要寻找一种能够解决避免由于同义词的存在而导致误分类的方法.说白

算法--近义词反义词

今天参加ACM校选,真的是伤心的到绝望,今年就没编过C++,语法都忘得差不多了,弄个helloWordl! 搞了20来分钟,简直日了狗.数组的传递忘干净了(自己太菜,比赛不知为啥死活调用函数时候无法传数组)报错,拿java编代码便习惯了,换到C艹各种艹啊.所以考到一半就放弃了.看着身边的大神一道道做完,自己哎,只做了2道,校选都过不去!!!!!眼睁睁看着题会做,不会用C++在纸上写java代码,心里这个苦.所以要拿c++编代码,用C++,用C++. 当然今天我还是拿java把这次比赛见到的一个蛮

近义词调研评估与代码实现(不断完善中…)

  1.确定要解决的问题及意义 在基于代码片段的分类过程中,由于程序员对数据变量名的选取可能具有一定的规范性,在某一特定业务处理逻辑代码中,可能多个变量名之间具有关联性或相似性(如“trade”(商品交易)类中,可能存在“business”,“transaction”,“deal”等同义词),在某些情况下,它们以不同的词语表达了相同的含义.因此,为了能够对代码片段做出更加科学的类别判断,更好地识别这些同义词,我们有必要寻找一种能够解决避免由于同义词的存在而导致误分类的方法.说白了,就是要去判断词

全文检索中近义词、关联词的解决方案

同义词腾讯api 一直想找到一个好的同义词解决方案,在百度和google查找,大家对于这个问题都只是寥寥数语,不愿讲清,我在javaeye搜此类信息也求不到,后来发了个提问贴也只有浏览数而无回复,不知道这是什么原因,无奈之下我只有自己研究. 因为没有其它的解决方案可以借鉴,以下纯为我个人的见解. 我认为所谓近义词.关联词检索不外乎以下三种形式: 1.类似google suggest,用户输入关键字后自动提示功能. 2.假如“奥运会”的关联词是“北京”,用户输入“奥运会”搜索时,将“奥运会”的搜索

elasticsearch 近义词-远程配置

curl -XPOST 'http://localhost:9200/sy4' -d '{ "analysis": { "analyzer":{ "mysynonym":{ "type": "custom", "tokenizer":"ik_smart", "filter":[ "remote_synonym" ] } }, &

谈谈近两年维护的一个最最坑爹项目

做程序员这一行的,最怕的就是维护公司曾经旧的项目,这些项目往往都有着文档缺少.数据混乱.代码混乱.凝视极少.历经多个维护人员等一些问题.最近楼主维护了一个非常极品的项目,堪称这两年来维护的最最极品项目,以下来讲讲心得体会. 首先.当我从svn上check out完项目代码时.我TM的惊呆了,竟然是编译公布过的,是的,没有源码,仅仅有aspx文件和dll,没有源码怎么改bug.tmd还要加功能.卧槽.让我在编译过的.一点都不熟悉的.看了几百行代码没见到凝视的项目里加功能?我勒个去,问领导.领导平静

JAVA中数字证书的维护及生成方

Java中的keytool.exe可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息.证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥.  每一个证书库是一个文件组成,它有访问密码,在首次创建时,它会自动生成证书库,并要求指定访问证书库的密码.  在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码.这些信息包括 CN=xx,OU=xx,O=xx,L=xx,