最近需要使用文本相似度对比来根据描述选择台词,下面主要是我遇到的一些坑
一、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()