You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Word2Vec查找与目标词汇语义相关的常用形容词?

获取与目标词汇语义相关的形容词的可行方案

方案1:直接使用预训练词向量模型(Word2Vec/GloVe/FastText)

无需自行训练,借助现成的预训练词向量模型先找到语义相近的词汇,再通过词性标注筛选出形容词,是最快捷的方案。

以下是基于gensim和nltk的实现代码:

import gensim.downloader as api
from nltk.tag import pos_tag
import nltk

# 下载词性标注所需资源
nltk.download('averaged_perceptron_tagger')

# 加载预训练Word2Vec模型(Google News语料训练)
model = api.load("word2vec-google-news-300")

def get_related_adjectives(target_word, top_n=10):
    try:
        # 先获取更多相似词汇,留足筛选空间
        similar_words = model.most_similar(target_word, topn=top_n * 5)
        # 对相似词汇做词性标注,筛选形容词(JJ/JJR/JJS分别对应原级/比较级/最高级形容词)
        tagged_words = pos_tag([word for word, _ in similar_words])
        adjectives = [word for word, tag in tagged_words if tag.startswith('JJ')]
        # 去重后返回指定数量结果
        return list(set(adjectives))[:top_n]
    except KeyError:
        # 目标词不在模型词汇表时返回空列表
        return []

# 示例:输入'cat'获取相关形容词
print(get_related_adjectives('cat'))

方案2:自定义训练Word2Vec模型

如果你的需求聚焦于特定领域(比如宠物医疗、时尚),预训练模型的通用性词汇可能不符合预期,可以用领域专属语料训练自己的Word2Vec模型,再结合词性筛选得到更贴合场景的形容词。

实现步骤如下:

from gensim.models import Word2Vec
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
import nltk

# 下载所需NLTK资源
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('averaged_perceptron_tagger')

# 替换为你的领域语料(文本量越大,模型效果越好)
domain_corpus = [
    "The fluffy cat curls up on a cozy couch.",
    "A playful kitten chases a colorful feather toy.",
    "The gentle cat purrs softly when petted.",
    # 更多领域相关文本...
]

# 语料预处理:分词、去停用词
stop_words = set(stopwords.words('english'))
processed_corpus = []
for sentence in domain_corpus:
    tokens = word_tokenize(sentence.lower())
    filtered_tokens = [token for token in tokens if token not in stop_words and token.isalpha()]
    processed_corpus.append(filtered_tokens)

# 训练自定义Word2Vec模型
model = Word2Vec(
    processed_corpus,
    vector_size=100,  # 向量维度
    window=5,         # 上下文窗口大小
    min_count=1,      # 忽略出现次数少于该值的词汇
    workers=4         # 并行训练线程数
)

# 复用方案1的筛选函数获取形容词
print(get_related_adjectives('cat'))

方案3:借助大语言模型(LLM)生成形容词

如果需要更贴合语境、语义更精准的形容词,可以用轻量型大语言模型直接生成,无需处理词向量和词性标注,灵活性更强。

基于transformers库的示例代码:

from transformers import pipeline

# 加载轻量型文本生成模型(distilgpt2)
generator = pipeline("text-generation", model="distilgpt2", truncation=True)

def generate_adjectives(target_word, top_n=5):
    # 构造提示词引导模型生成形容词
    prompt = f"List {top_n} adjectives that describe a {target_word}, separated by commas: "
    output = generator(prompt, max_new_tokens=30, num_return_sequences=1)[0]['generated_text']
    # 提取并整理生成的形容词
    adjectives = output.split(':')[-1].strip().split(',')
    return [adj.strip() for adj in adjectives if adj.strip()][:top_n]

# 示例:输入'cat'生成相关形容词
print(generate_adjectives('cat'))

注意事项

  • 预训练词向量模型的词汇表有限,若目标词是生僻词或领域专属词,可能无法匹配,此时优先选择自定义训练或LLM方案。
  • 词性标注可能存在误差,可结合WordNet同义词库进一步优化筛选逻辑,比如通过wordnet.synsets(target_word, pos=wordnet.ADJ)直接获取形容词同义词。
  • LLM方案需注意提示词的设计,精准的提示能大幅提升生成结果的质量,同时可根据需求选择不同规模的模型平衡性能和效果。

内容的提问来源于stack exchange,提问作者Ashkan Allahyari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:20:39