spacy文本nlp相似度比较

442 阅读1分钟

最近需要使用文本相似度对比来根据描述选择台词,下面主要是我遇到的一些坑


一、spacy安装

根据spacy官网spacy.io/usage/#quic…

pip install -U pip setuptools wheel
pip install -U spacy
python -m spacy download zh_core_web_trf
python -m spacy download en_core_web_trf

主要问题有trf版本没有语义解析功能,会报错,如果不解决的话就不会有真正意义上的语义分析,影响相似性判断结果

UserWarning: [W007] The model you're using has no word vectors loaded....

可以下载和使用zh_core_web_lg来解决

python -m spacy download zh_core_web_lg

二、使用

没什么太大难点,示例代码如下

import spacy
nlp = spacy.load("zh_core_web_lg")
doc1 = nlp("你好")
doc2 = nlp("见到你很高兴)
doc1.similarity(doc2) # 返回一个float值

主要是保存nlp处理结果,节省重复处理时间

# 保存处理结果
doc = nlp("你好")
doc.to_dis("/path/to/disk")


from spacy.tokens import Doc 
from spacy.vocab import Vocab

# 从磁盘获取
doc = Doc(Vocab()).from_disk("/path/to/doc")

可以利用GPU来加速处理

我还没试过,但光用cpu也挺快的,

# 安装gpu版,要安装cuda
pip install -U pip setuptools wheel
pip install -U 'spacy[cuda12x]'
python -m spacy download zh_core_web_trf
python -m spacy download en_core_web_trf

# 启动gpu
spacy.prefer_gpu()