near-synonym反义词生成(2):Prompt +Bert-MLM(FT)

embedded/2024/12/28 2:56:10/

near-synonym之反义词生成方法二

near-synonym, 中文反义词/近义词/同义词(antonym/synonym)工具包.
方法一为(neg_antonym): Word2vec -> ANN -> NLI -> Length
方法二为(mlm_antonym): Prompt + Bert-MLM(FT) + Beam-Search

项目地址

  • github: https://github.com/yongzhuo/near-synonym

一、安装

1.1 注意事项

默认不指定numpy版本(标准版numpy==1.20.4)
标准版本的依赖包详见 requirements-all.txt

1.2 通过PyPI安装

   pip install near-synonym使用镜像源, 如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple near-synonym如果依旧报错, 可以不带依赖安装, 之后缺什么包再补充什么pip install -i https://pypi.tuna.tsinghua.edu.cn/simple near-synonym --no-dependencies

1.3 模型文件

版本v0.3.0

  • 新增一种生成反义词/近义词的算法, 构建提示词prompt, 基于BERT-MLM等继续训练, 类似beam_search方法, 生成反义词/近义词;
    prompt: "xx"的反义词是"[MASK][MASK]"。
    
  • 模型权重在Macropodus/mlm_antonym_model, 国内镜像Macropodus/mlm_antonym_model

二、使用方式

2.1 快速使用方法二, 反义词, 近义词, 相似度

import traceback
import os
os.environ["FLAG_MLM_ANTONYM"] = "1"  # 必须先指定from near_synonym import mlm_synonyms, mlm_antonymsword = "喜欢"
word_antonyms = mlm_antonyms(word)
word_synonyms = mlm_synonyms(word)
print("反义词:")
print(word_antonyms)
print("近义词:")
print(word_synonyms)"""
反义词:
[('厌恶', 0.77), ('讨厌', 0.72), ('憎恶', 0.56), ('反恶', 0.49), ('忌恶', 0.48), ('反厌', 0.46), ('厌烦', 0.46), ('反感', 0.45)]
近义词:
[('喜好', 0.75), ('喜爱', 0.64), ('爱好', 0.54), ('倾爱', 0.5), ('爱爱', 0.49), ('喜慕', 0.49), ('向好', 0.48), ('倾向', 0.48)]
"""

2.3 详细使用方法二, 包括各种参数配置等

import traceback
import os
os.environ["FLAG_MLM_ANTONYM"] = "1"  # 必须先指定from near_synonym.mlm_antonym import MAMA.flag_filter_word = True  # 用于过滤词汇, [MASK]有时候可能不成词
MA.flag_skip = False  # decode的时候, 特殊字符是否跳过
MA.topk_times = 5  # topk重复次数, 避免非中文的情况
MA.topk = 8  # eg.5, 16, 32; 类似beam-search, 但是第一个char的topk必须全选
flag_normalize = True  # 分数标准化
topk = 8  # 每次取topk个char
word = "喜欢"
word_antonyms = MA.near_antonym(word, topk=topk, flag_normalize=flag_normalize)
word_synonyms = MA.near_synonym(word, topk=topk, flag_normalize=flag_normalize)
print("反义词:")
print(word_antonyms)
print("近义词:")
print(word_synonyms)"""
反义词:
[('厌恶', 0.8), ('讨厌', 0.75), ('憎恶', 0.58), ('厌烦', 0.46), ('反感', 0.46), ('厌厌', 0.45), ('憎厌', 0.45), ('嫌恶', 0.43)]
近义词:
[('喜好', 0.8), ('喜爱', 0.68), ('爱好', 0.56), ('爱爱', 0.5), ('倾向', 0.49), ('眷恋', 0.45), ('倾慕', 0.45), ('情愫', 0.44)]
"""

三、技术原理

3.1 技术详情

near-synonym, 中文反义词/近义词工具包.
方法二(mlm_antonym): 构建提示词prompt等重新训练BERT类模型("引号等着重标注, 带句号, 不训练效果很差) -> BERT-MLM(第一个char取topk, 然后从左往右依次beam_search) 
# 构建prompt:- "xxx"的反义词是"[MASK][MASK][MASK]"。- "xxx"的近义词是"[MASK][MASK][MASK]"。
# 训练MLM
# 一个char一个char地预测, 同beam_search

3.3 其他实验

choice, prompt + bert-mlm;

四、日志

2024.10.06, 版本v0.3.0, 完成prompt + bert-mlm形式生成反义词/近义词; 

Reference

For citing this work, you can refer to the present GitHub project. For example, with BibTeX:

@misc{Macropodus,howpublished = {https://github.com/yongzhuo/near-synonym},title = {near-synonym},author = {Yongzhuo Mo},publisher = {GitHub},year = {2024}
}

http://www.ppmy.cn/embedded/149338.html

相关文章

计算机基础复习12.22

Redis实现分布式锁 set lock_key unique_value nx px 10000 lock_key: key键 unique_value:是唯一的标识 nx: 表示lock_key不存在,才对lock_key进行设置 px: 设置过期时间 Linux的排查命令 top 实时监控进程 显示CPU 内存 负载 交换区 netstat:查看网络连接…

windows11家庭版安装docker无法识别基于wsl2的Ubuntu

软件环境:windows11家庭版安装WSL2,Ubuntu22.04,docker4.34.2 问题描述:安装docker时,设置阶段无法识别Ubuntu22.04. 原因:windows11家庭版本默认没有Hyper-V 解决方案:将下述代码保存在新建记事本中&am…

带着国标充电器出国怎么办? 适配器模式(Adapter Pattern)

适配器模式(Adapter Pattern) 适配器模式适配器模式(Adapter Pattern)概述talk is cheap, show you my code总结 适配器模式 适配器模式(Adapter Pattern)是面向对象软件设计中的一种结构型设计…

服务器时间不同步

问题 每次设置完时间之后,过一段时间服务器的时间就会变慢。 date相关命令 date # 查询当前时间(日期及时间,格式为:周几 月 日 时:分:秒 时区 年) Tue Dec 24 11:53:14 CST 2024date "%Y-%m-%d %H:%M:%S" # 使用和格式字符串…

Pytorch | 利用SMI-FGRM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用I-FGSSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集SMI-FGRM介绍SMI-FGRM算法流程 SMI-FGRM代码实现SMI-FGRM算法实现攻击效果 代码汇总smifgrm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CI…

LeetCode 24. 两两交换链表中的节点 (C++实现)

1. 题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,3,4] 输出&am…

IntelliJ IDEA中设置激活的profile

在IntelliJ IDEA中设置激活的profile,可以通过以下步骤进行: 通过Run/Debug Configurations设置 打开Run/Debug Configurations对话框: 在IDEA的顶部菜单栏中,选择“Run”菜单,然后点击“Edit Configurations...”或者…

Idea 将多个module显示在同一个project

Idea 将多个maven项目显示在同一个project下 1、选择菜单 File-》New -》Module from Existing Sources -> 2、在弹出的界面选中对应的Module的pom.xml,然后点击OK按钮就行了 (弹出框上面也提示了Eclipse 项目选中.project文件;Maven 项目选中pom.xml; ) 最终显…