精华内容
下载资源
问答
  • 一的同义词近义词
    千次阅读
    2019-11-21 20:33:34

    方案一:利用预训练好的词向量模型
    优点: (1)能把词进行语义上的向量化(2)能得到词与词的相似度

    缺点: (1)词向量的效果和语料库的大小和质量有较大的关系(2)用most_similar() 得到往往不是“同义词”,而是“共现词”


    方案二:同义词近义词库
    比较经典的是哈工大社会计算与信息检索研究中心同义词词林扩展版

    把词条按照树状的层次结果组织到一起,并区分了同义词和近义词,例如:

    from gensim.models.keyedvectors import KeyedVectors
    
    wv = KeyedVectors.load_word2vec_format('model/w2v_chisim_300d.bin', binary=True)
    print "wv.vector_size:", wv.vector_size  # 300
    print "len(wv.vocab):", len(wv.vocab)  # 414638
    
    def get_similar_words(kw):
        if kw in wv.vocab:
            print kw, "/".join([word for word, sim in wv.most_similar(kw, topn=10)])
            # for word, sim in wv.most_similar(kw):  # most_similar()的默认topn=10
            #     print word, sim  # 相似词、相似度
    
    if __name__ == '__main__':
        kws = [u"群众", u"男人", u"女人", u"国王", u"皇后"]
        for kw in kws:
            get_similar_words(kw)
    
    """
    wv.vector_size: 300
    len(wv.vocab): 414638
    群众 广大群众/百姓/职工群众/村民/老百姓/干部群众/农民/党员干部/困难群众/居民
    男人 女人/女孩子/伴侣/女性/你/异性/男性/闺蜜/她们/花心
    女人 男人/女孩子/女性/她们/你/花心/闺蜜/伴侣/异性/男性
    国王 五世/王后/四世/君主/七世/六世/教皇/伊莉莎白/二世/路易十四
    皇后 娘娘/公主/妃子/皇太后/皇帝/日本天皇/武则天/董鄂氏/太后/那拉氏
    """

    为了和上面词向量的结果进行对比,这里贴出了词林的结果:

    Aa01B02= 群众 大众 公众 民众 万众 众生 千夫
    Ab01A01= 男人 男子 男子汉 男儿 汉子 汉 士 丈夫 官人 男人家 光身汉 须眉 壮汉 男士
    Ab01B01= 女人 女子 女性 女士 女儿 女 娘 妇 妇女 妇道 妇人 女人家 小娘子 女郎 巾帼 半边天 娘子军 石女 红装 家庭妇女 农妇 才女
    Af05A01= 皇帝 帝 王 上 君 天子 天皇 帝王 君王 国王 国君 君主 当今 皇上 圣上 陛下 主公 九五 九五之尊 可汗 单于 大帝 沙皇 天骄 天王 五帝 太岁 王者 至尊 统治者
    Af05B02= 皇后 王后 娘娘


    1. 数据下载
    哈工大同义词词林扩展版官网:https://www.ltp-cloud.com/download/#down_cilin

    我在linux下打开文件出现乱码,需要用iconv命令进行转码(参考本人前面的文章Linux下打开windows中文文本乱码问题)

    如果文件中因存在不能识别的字符导致转码失败,用gedit打开并把那一行的非法字符删除就可以了。原有17817行,转码之后我保留了17815行。

    (本来想贴到这里来的,但因为包含了gongchandang, jiangzemin, dalai, qietingqi等等,博客园会报错“Post operation failed. The error message related to this problem was as follows: 博文中含有违规内容: xxx!”......)

     

    2. 数据处理和应用
    在哈工大的同义词词林中,由于它给词分了类别,同一个词在不同的类别下可能会有不同的同义词,例如“男人”的同义词有:
    Ab01A01= 男人 男子 男子汉 男儿 汉子 汉 士 丈夫 官人 男人家 光身汉 须眉 壮汉 男士
    Ah08A01= 夫 丈夫 爱人 男人 先生 女婿 老公 汉子 当家的 人夫 那口子

    为方便后续的应用,这里把这两行的词都合并到“男人”的同义词列表中,并在词后面加上type(=或者#),方便区分同义词与近义词,生成字典{词type: 同义词列表},例如:
    {"毛乎乎=": ["糙", "毛糙", "麻", "毛", "粗糙"], "车次#": ["等次", "名次", "班次", "航次", "场次"]}

    代码如下:

    def get_kw2similar_words(fin, fout):
        kw2similar_words = defaultdict(set)  # 去重
        with codecs.open(fin, "r", "utf-8") as fr:
            for idx, line in enumerate(fr):
                try:
                    row = line.strip().split(" ")
                    if row[0][-1] == u"@": continue
                    for kw in row[1:]:
                        row.remove(kw)
                        kw_and_type = kw + row[0][-1]
                        kw2similar_words[kw_and_type].update(row[1:])
                        row.insert(-1, kw)
                except Exception as error:
                    print "Error line", idx, line, error
                if idx % 1000 == 0: print idx
        for kw, similar_words in kw2similar_words.iteritems():
            kw2similar_words[kw] = list(similar_words)  # kw2similar_words = defaultdict(list)
        json.dump(kw2similar_words, open(fout, "w"), ensure_ascii=False)
    
    get_kw2similar_words(fin="data/cilin.txt", fout="data/kw2similar_words.json")
    
    测试:
    if __name__ == '__main__':
        kw2similar_words = json.load(open("data/kw2similar_words.json", "r"))
        keys_set = set(kw2similar_words.keys())
        kws = [u"群众", u"男人", u"女人", u"国王", u"皇后"]
        for kw in kws:
            for kw_and_type in [kw + u"=", kw + u"#"]:
                if kw_and_type in keys_set:
                    print kw_and_type, "/".join(kw2similar_words[kw_and_type])
    
    """
    群众= 大众/万众/民众/公众/众生/千夫
    男人= 男人家/爱人/女婿/先生/壮汉/汉/汉子/士/人夫/男士/老公/那口子/官人/丈夫/男子汉/男子/男儿/当家的/光身汉/须眉/夫
    女人= 妇道/太太/妇/老婆/娘/娘子/女人家/红装/妻子/女儿/媳妇儿/老婆子/内/家/婆姨/妻/女性/巾帼/婆娘/家庭妇女/娘儿们/女子/小娘子/妻妾/老小/娘子军/农妇/女郎/才女/妻室/妇女/半边天/内助/贤内助/石女/爱妻/爱人/家里/妇人/女士/女/老伴/夫人
    国王= 可汗/王/上/沙皇/至尊/君王/君/帝/帝王/主公/圣上/五帝/君主/大帝/国君/天王/单于/统治者/天骄/天皇/九五/九五之尊/皇帝/陛下/皇上/王者/天子/当今/太岁
    皇后= 娘娘/王后
    """


    3. 中文同义词近义词的其它在线词典
    词林在线词典 http://www.cilin.org/

    同义词库 http://chinese.abcthesaurus.com/

    汉典 http://www.zdic.net/

    更多相关内容
  • 包含中文同义词近义词共计万七千余条,词条收录内容包含CSDN平台主要同类词库资源,压缩包中包括个access版本和个excel版本以及pdg格式的现代汉语分类词典,希望支持
  • 收集汇总去重整理后的万三千多条同义词近义词替换库,方便伪原创同义词替换使用!同义词都经过人工整理过,错误很少,但也难免有不少量不准确的,也请大家谅解
  • 用于伪原创的同义词近义词库,4万多条都在个txt文档里,每行都是同义词
  • txt格式,同义词行,多个之间用英文逗号分隔,前后都有逗号。形如:“,后继有人 ,后来居上 ,后来者居上 ,后起之秀 ,略胜一筹 ,棋高一着 ,青出于蓝,”。 注意是9836组,不是9836条,已经归类绝无重复。去除了...
  • 万八千个同义词收集汇总去重整理后精选的三千四百多条同义词近义词替换库,方便伪原创同义词替换使用!同义词都经过人工整理过,错误很少,但也难免有不少量不准确的,也请大家谅解
  • 3700个同义词库,近义词库,seo必备,绝对可以用,已经帮去重和优化,我自己也是用这个,其它资源的都是垃圾的,我下载了几个都不能用,这个是用个所谓的30万词库优化得来的
  • 相对完善的SEO伪原创词库,20.1万对,有这个基本上可用,不想骗分。。
  • 个微软word的同义词,4.1万词的类属(91万词次); 同义词词林的两种形式的文本文件:八位词类77492词(?扩展版),四位词类62641词。 适用于语言分析,网络检索等需要同义词信息的情况。 同义词 同义词库 词林...
  • es搜索同义词近义词技术方案

    千次阅读 2021-11-03 18:56:29
    使用同义词文件,在es索引中定义"synonyms_path",并设置updateable为true动态更新同义词,但这个需要运维一起配合,当有新增的同义词时候,也需要运维帮我们添加进这个文件中,维护比较不方便 PUT /myIndex { ...

    方案一:

    使用同义词文件,在es索引中定义"synonyms_path",在服务器中放入同义词文件synonyms.txt文件,并设置updateable为true动态读取更新的同义词文件,但这个需要运维一起配合,当有业务有新增同义词时候,也需要运维帮我们添加进这个文件中,维护比较不方便

    PUT /myIndex
    {
      "settings": {
        "analysis": {
          "filter": {
            "my_synonym_filter": {
              "type": "synonym",
              "updateable": true,
              "synonyms_path": "analysis/synonyms.txt"
            }
          },
          "analyzer": {
            "my_synonyms_analyzer": {
              "tokenizer": "ik_smart",
              "filter": [
                "my_synonym_filter"
              ]
            }
          }
        }
      },
      "mappings": {
        "properties": {
          "title": {
            "type": "text",
            "analyzer": "ik_smart",
            "search_analyzer": "my_synonyms_analyzer"
          }
        }
      }
    }
    

    查看腾讯云关于同义词配置的文档,关于同义词的添加,也同样需要对现有索引进行reindex操作
    在这里插入图片描述

    主要讲一下方案二,直接在我们建的索引上进行维护同义词

    方案二:同义词技术方案

    es建索引时,我们可以给es创建一个同义词语汇单元过滤器,然后使用下面这样的同义词规则:

    “衬衫, 衬衫料, 衬衣料, 衬衣”

    例子:

    1、创建普通索引

    先创建一个普通的索引,并增加2条数据,对“海马毛”进行分词,可以得到“海马”,“毛”

    在这里插入图片描述

    {
      "索引名" : {
        "aliases" : {
        //索引别名
        },
        "mappings" : {
          "properties" : {
          //索引字段
          }
        },
        "settings" : {
            "number_of_shards" : "3",
            "max_result_window" : "100000000",
            "analysis" : {
              "filter" : {
                "my_synonym" : {
                  "ignore_case" : "true",
                  "expand" : "true",
                  "type" : "synonym",
                  "synonyms" : [
                    "马海毛,海马毛"
                  ],
                  "tokenizer" : "standard"
                }
              },
              "analyzer" : {
                "ik_max_word_my_analyzer" : {
                  "filter" : [
                    "my_synonym"
                  ],
                  "tokenizer" : "ik_max_word_tokenizer"
                }
              },
              "tokenizer" : {
                "ik_max_word_tokenizer" : {
                  "type" : "ik_max_word"
                }
              }
            }
          }
        }
      }
    
    

    进行match检索,发现也只能召回出一条数据

    在这里插入图片描述

    但是,业务上如果要认为在搜索上,输入海马毛的检索效果跟马海毛的一样,那么就需要给es配置同义词

    2、创建含有同义词过滤器的es索引

    es配置同义词的格式有多种,最简单的就是使用逗号分割
    
    "jump,leap,hop"(推荐)
    
    或者, 使用 => 语法,可以指定一个词项列表(在左边),和一个或多个替换(右边)的列表:
    
    "u s a,united states,united states of america => usa"
    或者,扩展
    "kitten => kitten,cat,pet"
    

    关于自定义分析器,可参考官方文档https://www.elastic.co/guide/cn/elasticsearch/guide/current/custom-analyzers.html
    在这里插入图片描述

    自定义分析器后,我们增加再对“海马毛”进行分词
    在这里插入图片描述

    发现同义词已经生效了,这个时候,我们在检索“海马毛”时候,也可以召回到“马海毛”的数据
    在这里插入图片描述
    后期维护:

    后续业务如果还需要一直添加同义词,对es来说,是需要reindex进行操作

    reindix操作的操作在我另一篇博客有详细描述:传送门

    如果只是单纯修改settings,那么只会对改索引新增的文档数据有效,对旧数据无效

    展开全文
  • 同义词挖掘一般有三种思路,借助已有知识库,上下文相关性,文本相似度。 1.1 知识库 可以借助已有知识库得到需要同义词,比如说《哈工大信息检索研究室同义词词林扩展版》和 HowNet,其中《词林》文件数据如下。 ...

    一、简介

    同义词挖掘一般有三种思路,借助已有知识库,上下文相关性,文本相似度。

    1.1 知识库

    可以借助已有知识库得到需要同义词,比如说《哈工大信息检索研究室同义词词林扩展版》和 HowNet,其中《词林》文件数据如下。

    Aa01A01= 人 士 人物 人士 人氏 人选
    Aa01A02= 人类 生人 全人类
    Aa01A03= 人手 人员 人口 人丁 口 食指
    Aa01A04= 劳力 劳动力 工作者
    Aa01A05= 匹夫 个人
    Aa01A06= 家伙 东西 货色 厮 崽子 兔崽子 狗崽子 小子 杂种 畜生 混蛋 王八蛋 竖子 鼠辈 小崽子
    Aa01A07= 者 手 匠 客 主 子 家 夫 翁 汉 员 分子 鬼 货 棍 徒
    Aa01A08= 每人 各人 每位
    Aa01A09= 该人 此人
    

    以上两个知识库是人工编辑的,毕竟数量有限,我们还可以借助众包知识库百科词条获取同义词,比如百度百科,如下图所示,在百度百科搜索“凤梨”,我们可以看到在返回页面结果中的 info box中有一个属性为“别称”,别称中就是凤梨的同义词。除此之外,在百科词条的开头描述中,有如下描述“又称”、“俗称”也是同义词,我们可以利用爬虫把这些词爬下来。

    百度搜索和谷歌搜索等搜索工具一般都有重定向页,这也可以帮助我们去挖掘同义词。

    使用知识库挖掘同义词的优点是简单易得,而且准确率也高,缺点就是知识库覆盖率有限,不是每个细分领域都有。对于金融、医疗、娱乐等领域都需要各自的知识库。

    1.2  上下文相关性

    利用上下文相关性挖掘同义词也比较好理解,如果两个词的上下文越相似的话,那么这两个词是同义词的概率就越大。使用词向量挖掘同义词是比较常见的做法,比如使用word2vector训练得到词向量,然后再计算余弦相似度,取最相似的top k个词,就得到了同义词。

    word2vector是无监督学习,而且本质上来说它是一个语言模型,词向量只是它的副产品,并不是直接用来挖掘同义词。有篇paper发明了弱监督的同义词挖掘模型DPE,也取得了不错的效果。DPE模型流程如下图,一共分为两个阶段,第一阶段跟word2vector差不多,也是训练词向量,只不过DPE是一种graph embedding的思路,首先从语料中构建语义共现网络,然后通过对网络的边采样训练词向量。第二阶段通过弱监督训练一个打分函数,对输入的一对词判断属于同义词的概率。感兴趣的可以看看这篇paper 论文链接

    基于上下文相关性的同义词挖掘方法的优点是能够在语料中挖掘大量的同义词,缺点是训练时间长,而且挖掘的同义词很多都不是真正意义上的同义词需要人工筛选。这种方法对于词频较高的词效果较好。

    1.3 文本相似度

    对于这一对同义词“阿里巴巴网络技术有限公司”和“阿里巴巴网络公司”直接去计算上下文相似度可能不太有效,那一种直观的方法是直接计算这两个词的文本相似度,比如使用编辑距离(Levenshtein distance)或者 LCS(longest common subsequence),如果两个词的文本相似度大于阈值的话我们就认为他们是同义词的关系。在这里推荐一个计算文本相似度的Java开源项目,基本上文本相似度算法应有尽有。[ 文本相似度算法 ]

    基于文本相似度同义词挖掘方法的优点是计算简单,不同于word2vector,这种方法不需要使用很大的语料,只要这个词出现过一次就可以发现同义词关系。这种方法的缺点是有时候不太靠谱,会挖掘出很多错误的同义词,尤其是当两个词比较短的情况下,比如“周杰伦”和“周杰”,就可能会被认为是同义词。所以这种方法适用于一些较长的文本,特别是专业词汇,术语。

    二、同义词挖掘的算法实现

    github地址:https://github.com/tigerchen52/synonym_detection

    在这个github项目中实现了4种同义词挖掘的方法:

    1. 百度百科同义词
    2. word2vector 
    3. 语义共现网络的节点相似度
    4. Levenshtein距离

    觉的有用同学记得点star~~

    2.1 百度百科同义词

    代码示例(synonym_detection/source/main.py)

    def baike_invoke():
        import baike_crawler_model
        print(baike_crawler_model.baike_search(('凤梨', '001')))
    
    if __name__ == '__main__':
        baike_invoke()

    输出

    ['菠萝皮', '地菠萝', '菠萝', '草菠萝']

    2.2 word2vector 

    在这里使用《三体》小说作为训练语料,使用以下10个词作为输入,从语料中挖掘这10个词的同义词。后面几个方法使用相同的输入。

    1|海王星
    2|女孩
    3|椅子
    4|海军
    5|阵列
    6|变化
    7|程心
    8|火焰
    9|天空
    10|建造

     代码示例

    python synonym_detect -corpus_path  ../input/三体.txt -input_word_path ../temp/input_word.txt -process_number 2 if_use_w2v_model True

    参数

    • -corpus_path 为语料文件,使用三体小说作为训练语料
    • -input_word_path 输入词表,对词表中的词进行同义词挖掘。文件中每行以“|”作为分隔符,第一列是id,第二列是输入词
    • -process_number 2 进程数量
    • -if_use_w2v_model True 使用word2vector模型
    • 默认返回top 5个同义词

    输出

    1	海王星	海王星|土星|天王星|背面|金星
    3	椅子	椅子|办公桌|地板|地毯|铁锹
    2	女孩	女孩|中年人|女孩儿|女子|泪光
    9	天空	天空|晨光|夜空|暮色|漆黑
    4	海军	海军|军种|服役|事务性|政工
    6	变化	变化|隐隐约约|异常|微妙|所致
    5	阵列	阵列|矩形|一千公里|环|标示出
    7	程心	程心|AA|艾|当程心|曹彬
    8	火焰	火焰|暗红|山脉|灼热|变幻
    10	建造	建造|天梯|最小|准|航空母舰

    2.2 语义共现网络的节点相似度

    语义共现网络本质是根据上下文构建的图,图中的节点是词,边是这个词的上下文相关词。对于语义共现网络的两个节点,如果这两个节点的共同邻居节点越多,说明这两个词的上下文越相似,是同义词的概率越大。例如,对于《三体》小说中的两个词“海王星”和“天王星”,在《三体》语义共现网络中,“海王星”和“天王星”的邻居节点相似度很高,则说明两个词是同义词的可能性很高。如下图所示:

    代码示例

    python synonym_detect -corpus_path  ../input/三体.txt -input_word_path ../temp/input_word.txt -process_number 2 -if_use_sn_model True
    

    输出

    5	阵列	阵列|矩形|队列|星体|量子
    9	天空	天空|中|夜空|太阳|消失
    4	海军	海军|航空兵|服役|空军|失败主义
    10	建造	建造|制造|加速器|飞船|太阳系
    3	椅子	椅子|桌子|坐下|沙发|台球桌
    1	海王星	海王星|天王星|土星|卫星|群落
    7	程心	程心|AA|中|罗辑|说
    8	火焰	火焰|光芒|光点|推进器|雪峰
    2	女孩	女孩|接待|冲何|请云|女士
    6	变化	变化|发生|意味着|恢复|中

    可以看出基于语义共现网络得到的同义词与word2vector结果类似,甚至在某些词上效果更好。

    2.4 Levenshtein距离

    代码示例

    python synonym_detect -corpus_path  ../input/三体.txt -input_word_path ../temp/input_word.txt -process_number 2 -if_use_leven_model True
    

    输出

    1	海王星	海王星|冥王星|天王星|星|王
    7	程心	程心|请程心|带程心|连程心|从程心
    6	变化	变化|变化很大|动态变化|发生变化|化
    3	椅子	椅子|子|筐子|村子|棒子
    2	女孩	女孩|女孩儿|女孩子|小女孩|女
    10	建造	建造|建造成|造|建|建到
    5	阵列	阵列|列|阵|历列|列为
    9	天空	天空|海阔天空|空|天|天马行空
    8	火焰	火焰|火|焰|火星|野火
    4	海军	海军|于海军|陆海空军|海|海军军官

     2.5 DPE模型

    undo

    展开全文
  • 同义词近义词大全 abandon, desert, forsake, leave, give up  这些动词或词组均含"抛弃、放弃"之意  abandon 强调永远或完全放弃或抛弃人或事物等,这可能是被迫的,也可能是自愿的。  desert 着重指违背法律...
  • 在搜索引擎中,我们会碰到大量的同义词需求。用户在描述同个东西的时候,会有各种各样的描述。 在电商搜索环境中,同义词分成好几类: 1. 品牌同义词:nokia=诺基亚,Adidas=阿迪达斯 2. 产品同义词:投影仪...

    在搜索引擎中,我们会碰到大量的同义词需求。用户在描述同一个东西的时候,会有各种各样的描述。

          在电商搜索环境中,同义词分成好几类:

         1. 品牌同义词:nokia=诺基亚,Adidas=阿迪达斯

         2. 产品同义词:投影仪≈投影机,电话≈cell phone; automobile 和car。

         3.旧词和新词:自行车  -> 脚踏车

         4.南方用词和北方用词:番茄-> 西红柿。

         5.传统的同义词:储物柜和收纳柜。

         6.错别字同义词:瑜伽和瑜珈(错误写为斜王旁)

           对应英文来说,还有词干提取,如单复数、动词原形和ing形式;英文还有一个特殊的现象,例如两个单词可以分开写,也可以合并在一起,例如keychain和key chian(钥匙链),boyfriend 和boy friend。

           近义词就比较多了: 包括size 大码≈大号;短裤和热裤;边疆和边疆。

          上位词:苹果手机上位词 是手机。

           反义词:宽松和修身。当我们做query改写的时候,改写千万不能改写出反义词。

     

           如果我们仔细观察,我们会发现有的词可以互相替换,有些词是只能单向替换(换一个方向就不对了,例如周杰伦可以替换为周董,但是周董只能在一定情况下替换为周董)。

    如何挖掘得到同义词呢?

            我们可以从用户搜索词、商品标题、搜索和点击来获取。最根本的来源还是商家对商品标题的优化,聪明的商家会把同义词堆叠在标题中,以期望获取到更多的流量。

            从点击日志上看,如果w1和w2是同义词,那么搜索w1和搜索w2,理论上会有大量的共同点击的商品x1、x2、x3等等。

             标题商品标题得到大量的语料,例如投影仪和投影机,拉杆箱(draw bar box)和旅行箱(luggage)。

     

           通过统计或者word2vec训练词的相关性,找到高相关度的词。统计这些词在标题中共同出现次数,即w1和w2的共现次数。

    以下代码查看word2vec的效果


    fromgensim.test.utilsimportcommon_texts,get_tmpfile

    fromgensim.modelsimportWord2Vec

    model_path="./data/word2vec_en_50d.model"

    model=Word2Vec.load(model_path)

    model.wv['computer']

    Out[6]:

    array([-0.48867282, -0.10507897, -0.23138586, -0.10871041,  0.1514824 ,

          -0.01487145, -0.385491  ,  0.01792672, -0.32512784, -0.9063424 ,

          -0.5428677 ,  0.6565156 ,  0.02183418,  0.07939139,  0.03485253,

            0.319492  , -0.27633888,  0.52685845, -0.0582791 , -0.4844649 ,

            0.249212  ,  0.8144138 , -0.03233343, -0.36086813,  0.34835583,

          -0.07177112,  0.0828275 ,  0.6612073 ,  0.74526566, -0.12676844,

          -0.08891173, -0.08520225, -0.04619604,  0.13580324,  0.183159  ,

            0.15528682,  0.01727525, -0.43599448, -0.2579532 , -0.23192754,

          -0.32965428,  0.09547858,  0.00419413, -0.06285212,  0.18150753,

          -0.21699691,  0.60977536, -0.06555454,  0.35746607, -0.06610812],

          dtype=float32)

    In[13]:

    model.wv.similarity('case','cover')    # case 和cover在描述手机壳的时候基本是同义词

    Out[13]:

    0.8538678

    In[22]:

    defget_top_sim(word):

    similary_words=model.wv.most_similar(word,topn=10)

    forw,sinsimilary_words:

    print(word,"=",w,s)

    get_top_sim('case')

    case = holder 0.8879926800727844

    case = clamshell 0.887456476688385

    case = tablet 0.8748524188995361

    case = storage 0.8703626990318298

    case = carrying 0.8672872185707092

    case = hardcase 0.8580055236816406

    case = carring 0.8558304309844971

    case = seal 0.8552369475364685

    case = cover 0.8538679480552673

    case = stand 0.8476276993751526

     

            通过word2vec,我们可以找出原始词和最相似的10个单词,然后我们统计origin 和substitute(原始词和替代词)在标题中的共现次数,通过这种挖掘,我们找到大量的候选词对,这种词通过人工review可以作为同义词的候选。

           对这种情况稍微做一些扩展,我们就能得到同义query到同义query之间的对应关系。


            统计分析上位词,统计每个商品类目下的产品词,出现次数top n的产品词w,对应到商品的类目词c,那么w -> c很可能 就是一个上位词关系。

    人工词表

           在维护词表的时候,我们一定不能忘记人工词表。人工词表的维护必须要有后台工具。

    我们如何应用人工词表:

            1、在商品标题对应的索引词中做同义词扩展,当不用不管用同义词的哪一个来搜索的时候都可以搜索到。

            2、在QueryProcess模块中,对词做同义词扩展、做近义词改写,改写出来的近义词的权重要比原始词的权重更小。在改写中,我们还会遇到一个问题,Q(分词为w1,w2,w3)改写成q1(w1,w2)和q2(w2,w3)的时候,我们会遇到q1和q2分别和Q如何计算相关性的问题。

             3、当query 做同义词改写的时候,需要一些词做context(上下文)。如“周董的新歌”可以修改为“周杰伦的新歌”,但是“周董的公司”就未必是周杰伦的公司了。

     

    参考文献:

    1、搜索引擎同义词反馈机制【百度搜索研发部】

    2、https://www.docin.com/p-1136208118.html

    3、面向检索信息的同义词挖掘

    展开全文
  • python中怎样处理汉语的同义词用结巴分词python中文分词:结巴分词中文分词是中文文本处理的个基础性工作,结巴分词利用进行中文分词。其基本实现原理有三点:基于Trie树结构实现高效的词图扫描,生成句子中汉字...
  • 没细数,几万个应该有,我自己在用的。两个组,中间到逗号隔开了。可以另存入数据库或Excel或根据软件导入规则,稍做修改,就可直接导入伪原创类软件。灵活使用。
  • 同义词查询心路同行查询所有同义词查询近义词: 查问,盘问 [拼音] [chá xún] [释义] 查考询问所有近义词:一共,一切,一齐,全体,全数,全盘,全豹,全部,全面,完全,悉数,整个,统统,通盘,总共[拼音] [suǒ...
  • 生成word2vec,然后来寻找单词的近义词,现在网上搜索的大多是源码,对于非专业的开发人员来说使用起来不是很友好,我找了晚上找到了个比较好用的库,可以简单的使用行代码来找到同义词。这个有趣的库就是...
  • 魂动罗java源码 Jcseg完整版本(源码, 词库, 帮助文档, 词库管理工具, jar文件)下载: . 关于jcseg: jcseg是使用Java开发的个开源中文分词器,使用流行的mmseg算法...中英文同义词追加/同义词匹配 + 中文词条拼音追
  • 请参考:总结——》【Elasticsearch】 、没有配置es近义词 1、新建索引 PUT /test_001 { "settings": { "index": { "max_result_window": 1000000 }, "analysis": { "analyzer": { "ik_max_word": { "tokenizer": ...
  • 、下载elasticsearch-analysis-dynamic-synonym github官方下载地址 如果官方地址无法打开可以点击
  • Elasticsearch之自定义同义词开发实践

    千次阅读 2021-12-13 09:39:58
    1.什么是同义词查询 ES(Elasticsearch)作为个开源的、高扩展的分布式全文检索引擎,具有近实时的索引、搜索和分析等优点。用户在使用ES时,主要青睐其快速的查询性能。不同于传统的数据库,它具有非常灵活的...
  • 每个栏目页面也有一些共享的栏目,如“网站公告、会员登录、新文章”等,当它出现在所有栏目中时,实际上是对SEO的种干扰,但有时是无法删除的。这是比较困难的,因为只有个主页,但有很多栏目页面,涉及更多的...
  • Elasticsearch之近义词/同义词的使用 目录Elasticsearch之近义词/同义词的使用环境:创建索引 环境: ES 7.6.1 kinaba 7.6.1 centos 7 创建索引 PUT /test_001 { "settings": { "index": { "max_result_window": ...
  • 原论文:《Automatic Synonym Discovery with Knowledge Bases》 背景知识 ...3)监督/弱监督方法,训练同义词分类器,检测出固定的句式pattern来挖掘同义词,但也需要依赖人工精细的选择一些种子训练
  • 欣赏和权限的近义词是什么欣赏的近义词——玩赏、观赏、赏识、鉴赏权限的近义词——范围,、权势、权位、权责如何给同义词授权如果在bai用户agmtadmin下创建了du个表TC_EP_SPLIT_SHPMT , 在用户agmtapp下想使用zhi...
  • 我正在创建同义词列表,我将它存储在数据库中并在进行全文搜索之前检索它.当用户输入如下:word1我需要在我的同义词表中查找这个单词.所以,如果找到这个单词,我会选择这个单词的所有同义词,并在下个查询的全文...
  • python同义词替换

    2020-12-15 17:14:48
    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台;社区覆盖了云计算、大数据、人工智能、...
  • python替换同义词 jieba替换同义词

    万次阅读 2019-03-26 09:55:33
    python替换同义词 jieba替换同义词 文章目录python替换同义词 jieba替换同义词0 描述:1构建同义词文件txt2代码 ...所以我们打算现将用户的输入做个预处理 , 将一些同义词 手动 转化为 知识图谱的中标准...
  • 本人手工整理的,数量大概在60000个左右,因为词比较多,所以没办法个人核对,是否完全都是同义近义词.但是数量上是没打折扣的,绝对没有重复的,实打实六万干货. 有需要的朋友下载吧,我自己之前也下载过几个号称十...
  • 数据库-同义词

    2022-06-27 14:08:31
    基本概念:同义词是数据库模式对象的⼀个别名,经常⽤于简化对象访问和提⾼对象访问的安全性。在使⽤同义词时,数据库将它翻译成对应模式对象的名字。与视图类似,同义词并不占⽤实际存储空间,只有在数据字典中保存...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,946
精华内容 778
热门标签
关键字:

一的同义词近义词