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

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

near-synonym, 中文反义词/近义词/同义词(antonym/synonym)工具包.

方法一为(neg_antonym): Word2vec -> ANN -> NLI -> Length

方法二为(mlm_antonym): Prompt + Bert-MLM(FT) + Beam-Search

项目地址

一、安装

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 快速使用方法二, 反义词, 近义词, 相似度

python3 复制代码
import traceback
import os
os.environ["FLAG_MLM_ANTONYM"] = "1"  # 必须先指定

from near_synonym import mlm_synonyms, mlm_antonyms


word = "喜欢"
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 详细使用方法二, 包括各种参数配置等

python3 复制代码
import traceback
import os
os.environ["FLAG_MLM_ANTONYM"] = "1"  # 必须先指定

from near_synonym.mlm_antonym import MA

MA.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}
}
相关推荐
樱花的浪漫1 小时前
Cuda reduce算子实现与优化
数据库·人工智能·深度学习·神经网络·机器学习·自然语言处理
文火冰糖的硅基工坊3 小时前
[人工智能-大模型-29]:大模型应用层技术栈 - 第二层:Prompt 编排层(Prompt Orchestration)
人工智能·大模型·prompt·copilot
海森大数据12 小时前
三步破局:一致性轨迹强化学习开启扩散语言模型“又快又好”推理新时代
人工智能·语言模型·自然语言处理
CSTechEi14 小时前
【SPIE/EI/Scopus检索】2026 年第三届数据挖掘与自然语言处理国际会议 (DMNLP 2026)
人工智能·自然语言处理·数据挖掘
之墨_2 天前
【大语言模型】—— 自注意力机制及其变体(交叉注意力、因果注意力、多头注意力)的代码实现
人工智能·语言模型·自然语言处理
Element_南笙2 天前
吴恩达新课程:Agentic AI(笔记2)
数据库·人工智能·笔记·python·深度学习·ui·自然语言处理
takashi_void2 天前
本地实现斯坦福小镇(利用大语言模型使虚拟角色自主发展剧情)类似项目“Microverse”
人工智能·语言模型·自然语言处理·godot·游戏程序·斯坦福小镇
Costrict2 天前
解锁新阵地!CoStrict 现已支持 JetBrains 系列 IDE
大数据·ide·人工智能·深度学习·自然语言处理·ai编程·visual studio
zenRRan2 天前
用中等难度prompt做高效post training
人工智能·深度学习·机器学习·计算机视觉·prompt
墨利昂2 天前
词向量:自然语言处理技术体系的核心基石
人工智能·自然语言处理