使用D2V向量化容器

导入功能块

[1]:
from EduNLP.Tokenizer import PureTextTokenizer

from EduNLP.Vector import T2V, D2V
d:\MySoftwares\Anaconda\envs\data\lib\site-packages\gensim\similarities\__init__.py:15: UserWarning: The gensim.similarities.levenshtein submodule is disabled, because the optional Levenshtein package <https://pypi.org/project/python-Levenshtein/> is unavailable. Install Levenhstein (e.g. `pip install python-Levenshtein`) to suppress this warning.
  warnings.warn(msg)

令牌化

[2]:
raw_items = [
    r"题目一:如图几何图形.此图由三个半圆构成,三个半圆的直径分别为直角三角形$ABC$的斜边$BC$, 直角边$AB$, $AC$.$\bigtriangleup ABC$的三边所围成的区域记为$I$,黑色部分记为$II$, 其余部分记为$III$.在整个图形中随机取一点,此点取自$I,II,III$的概率分别记为$p_1,p_2,p_3$,则$\SIFChoice$$\FigureID{1}$",
    r"题目二: 如图来自古希腊数学家希波克拉底所研究的几何图形.此图由三个半圆构成,三个半圆的直径分别为直角三角形$ABC$的斜边$BC$, 直角边$AB$, $AC$.$\bigtriangleup ABC$的三边所围成的区域记为$I$,黑色部分记为$II$, 其余部分记为$III$.在整个图形中随机取一点,此点取自$I,II,III$的概率分别记为$p_1,p_2,p_3$,则$\SIFChoice$$\FigureID{1}$"
]

tokenizer = PureTextTokenizer()
token_items = [item for item in tokenizer(raw_items)]

print(token_items)
[['题目', '如图', '几何图形', '此图', '三个', '半圆', '三个', '半圆', '直径', '直角三角形', 'ABC', '斜边', 'BC', '直角', 'AB', 'AC', '\\bigtriangleup', 'ABC', '三边', '围成', '区域', '记', 'I', '黑色', '记', 'II', '其余部分', '记', 'III', '图形', '中', '随机', '取', '一点', '此点', '取自', 'I', ',', 'II', ',', 'III', '概率', '记', 'p', '_', '1', ',', 'p', '_', '2', ',', 'p', '_', '3', '[MARK]', '[FIGURE]'], ['题目', '二', '如图', '古希腊', '数学家', '希波', '克拉底', '研究', '几何图形', '此图', '三个', '半圆', '三个', '半圆', '直径', '直角三角形', 'ABC', '斜边', 'BC', '直角', 'AB', 'AC', '\\bigtriangleup', 'ABC', '三边', '围成', '区域', '记', 'I', '黑色', '记', 'II', '其余部分', '记', 'III', '图形', '中', '随机', '取', '一点', '此点', '取自', 'I', ',', 'II', ',', 'III', '概率', '记', 'p', '_', '1', ',', 'p', '_', '2', ',', 'p', '_', '3', '[MARK]', '[FIGURE]']]

向量化

[3]:
path = "../test_model/d2v/d2v_test_256/d2v_test_256.bin"
t2v = T2V('d2v', filepath=path)
# 或
# t2v = D2V(path)

embed_size = t2v.vector_size
print(embed_size)
256
  • 注意:Doc2vec没有实现infer_tokens

[4]:
# item_vector = t2v(token_items)
item_vector = t2v.infer_vector(token_items)
print(len(item_vector), len(item_vector[0])) # [array(), ..., array()]
2 256