SiriBlog

siriyang的个人博客


  • 首页

  • 排行榜

  • 标签115

  • 分类37

  • 归档318

  • 关于

  • 搜索

NLP综合实践(一)

发表于 2020-08-03 更新于 2021-10-29 分类于 计算机 , 技术 , Python 阅读次数: Valine:
本文字数: 15k 阅读时长 ≈ 14 分钟

2020.08.03

  开始试验的第一天,首先从安装环境走起。由于实验指导书上要求的包没法直接使用pip命令进行安装,下载速度慢,下到一半还老是断开连接,所以基本上都采用直接去PyPI上下载安装包进行手动安装。

  首先新建了一个名为nlp的Python虚拟环境:

1
conda create -n nlp python=3.6

  然后根据教程的要求安装jieba、gensim、torch三个库,因为CUDA和cuDNN以前做图像的时候已经装过10.0版本的了,就将就用。全部安装完成后,虚拟环境下的包和版本信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# packages in environment at S:\Anaconda3\envs\nlp:
#
# Name Version Build Channel
boto 2.49.0 <pip>
boto3 1.14.33 <pip>
botocore 1.17.33 <pip>
certifi 2020.6.20 py36_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
chardet 3.0.4 <pip>
Cython 0.29.14 <pip>
docutils 0.15.2 <pip>
gensim 3.8.3 <pip>
idna 2.10 <pip>
jieba 0.42.1 <pip>
jmespath 0.10.0 <pip>
numpy 1.19.1 <pip>
pip 20.1.1 py36_1 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
python 3.6.10 h9f7ef89_2 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
python-dateutil 2.8.1 <pip>
requests 2.24.0 <pip>
s3transfer 0.3.3 <pip>
scipy 1.5.2 <pip>
setuptools 49.2.0 py36_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
six 1.15.0 <pip>
smart-open 2.1.0 <pip>
sqlite 3.32.3 h2a8f88b_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
torch 1.2.0 <pip>
urllib3 1.25.10 <pip>
vc 14.1 h0510ff6_4 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
vs2015_runtime 14.16.27012 hf0eaf9b_3 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
wheel 0.34.2 py36_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
wincertstore 0.2 py36h7fe50ca_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
zlib 1.2.11 h62dcd97_4 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

  经过测试,三个包均可正常导入,其中输入命:

1
torch.cuda.is_availabel()

输出值为True,说明GPU可正常调用。


NLP基本概念

语料库(Corpus)
  所有的文本集合。

分词(Tokenization)
  就是把一篇文章拆分成一个个的单词,如果是中文,则是把一篇文章拆分成一个个的词语。

停用词(StopWords)
  某些NLP任务需要将一些常出现的“无意义”的词去掉,比如:统计一篇文章频率最高的100个词,可能会有大量的“is”、”a”、”the” 、“一个”、“与”这类词,它们就是StopWords。

归一化(Normalization)
  将一系列的单词转化成某种统一的形式, 比如:将一句话的各个单词中,有大写、有小写,将之统一转成小写。再比如,一句话中,有些单词是缩写词,将之统一转换成全名。

词向量(Word Embedding)
  词向量主要用于将自然语言中的词符号数学化,这样才能作为机器学习问题的输入。数学化表示词的方式很多,最简单的有独热(ont-hot) 编码。例如:现共有三个词语“篮球”、“足球”、“排球”,则分别用独热编码将它们表示为: [1,0,0],[0,1,0],[0,0,1]。 显然,独热编码有以下缺点:1.可能导致维数过大,对算法来说复杂度过高。2.两个词的相似程度无法表示。
  词向量与独热编码不同,一般是以下形式:[0.2333,0.4324,0.6666,-0.9527,…],维数以50维和100 维比较常见。词向量解决了维度过大的问题,且两个词的相似度可以用欧几里得距离、余弦相似度等方法求得。word2vec 是最常见的词向量获取方法。


2020.08.05

正则表达式

re.match( pattern, string, flags=0)
  re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

re.search(pattern, string, flags=0)
  re.search扫描整个字符串并返回第一个成功的匹配。

re.sub(patterm, repl, string, count=0, flags=0)
  re.sub用于替换字符串中的匹配项。

re.compile(pattern[, flags])
  compile函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供match()和search() 这两个函数使用。

模式 描述
^ 匹配字符串的开头
$ 匹配字符串的末尾
. 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符
re{n} 精确匹配n个前面表达式。例如,o{2} 不能匹配”Bob” 中的”o”, 但是能匹配”food” 中的两个o
re{n,} 匹配n个前面表达式。例如,o{2,} 不能匹配”Bob”中 的”o”,但能匹配”fooood”中的所有o。 “o{1,}” 等价于”o+”。 “o{0,}” 则等价于”o*”
re{n,m} 匹配n到m次由前面的正则表达式定义的片段,贪婪方式
`a b` 匹配a或b
\1...\9 匹配第n个分组的内容

2020.08.06

jieba的使用

分词

  • jieba.cut 方法接受三个输入参数:需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型 。
  • jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细。
  • 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8。
  • jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用 jieba.lcut 以及jieba.lcut_for_search 直接返回 list。
  • jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。

  全模式下会将所有可能的词语都进行分词,有时候他可以切出一些不太好切出的词,同时增大词汇量,但是他也会引入一些不太准确的分词。
  精确模式下会尽可能的将句子精确切开,一般情况下采用这种模式即可。
  搜索引擎模式是在精确模式的基础上,对长词再进行划分,提高分词的召回率,适合用于搜索引擎分词。

添加自定义词典
  开发者可以指定自定义词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的分词正确率

  • jieba.load_userdict(file_name),file_name 为文件类对象或自定义词典的路径,词典格式和 dict.txt 一样,一个词占一行,每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。词频省略时使用自动计算的能保证分出该词的词频。
  • 使用 add_word(word,freq=None,tag=None)和 del_word(word)可在程序中动态修改词典。

  非常见词需要进行添加自定义词典操作才能更好地分词,采用 add_word()方法适合于需要添加的词不多的情况,如果词语较多建议采用 load_userdict()。

关键词提取
  关键词抽取就是从文本里面把跟这篇文档主题最相关的一些词抽取出来。这个可以追溯到文献检索初期,当时还不支持全文搜索的时候,关键词就可以作为搜索这篇论文的词语。因此,目前依然可以在论文中看到关键词这一项。jieba 分词系统中实现了两种关键词抽取算法,分别是基于 TF-IDF 的关键词抽取算法和基于 TextRank 的关键词抽取算法,两类算法均是无监督学习算法。

  1. 基于 TF-IDF 算法的关键词抽取
    jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
  • sentence 为待提取的文本
  • topK 为返回几个 TF-IDF 值最大的关键词,默认值为 20
  • withWeight 为是否一并返回关键词权重值,默认值为 False
  • allowPOS 仅包括指定词性的词,默认值为空,即不筛选。
  1. 基于 TextRank 算法的关键词抽取
    jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=())

TF-IDF
  在信息检索理论中,TF-IDF 是 Term Frequency - Inverse Document Frequency 的简写。TF-IDF 是一种数值统计,用于反映一个词对于语料中某篇文档的重要性。在信息检索和文本挖掘领域,它经常用于因子加权。TF-IDF 的主要思想就是:如果某个词在一篇文档中出现的频率高,也即 TF 高;并且在语料库中其他文档中很少出现,即 DF 的低,也即 IDF 高,则认为这个词具有很好的类别区分能力。TF-IDF在实际应用中主要是将二者相乘,也即TF IDF,TF为词频(Term Frequency),表示词 t 在文档 d 中出现的频率;IDF 为逆文档频率(Inverse Document Frequency),表示语料库中包含词 t 的文档的数目的倒数。
*TextRank

  类似于 PageRank 的思想,将文本中的语法单元视作图中的节点,如果两个语法单元存在一定语法关系(例如共现),则这两个语法单元在图中就会有一条边相互连接,通过一定的迭代次数,最终不同的节点会有不同的权重,权重高的语法单元可以作为关键词。


Gensim 的使用

  Gensim 是一款开源的第三方 Python 工具包,用于从原始的非结构化文本中,无监督地学习到文本隐层的主题向量表达。它支持包括 TF-IDF、LSA、LDA、和 word2vec 在内的多种主题模型算法,支持流式训练,并提供了诸如相似度计算、信息检索等一些常用任务的API 接口。

word2vec 词向量
  word2vec 就是一种词嵌入,说的简单一点就是将一个词语表征为一个向量,当然这肯定不是一个随意给的一个向量,它是在一定的约束条件下得到。显然,首先作为一个向量,它可以被计算机“理解”,并用来进行各种数值运算;其次,两个向量之间的相似度表征了对应的两个词语的语义相似度。word2vec 非常的看重语言的逻辑性,也就是词语的前后关系。

计算词向量(word2vec)
  利用 gensim.models.Word2Vec(sentences)建立词向量模型,该构造函数执行了三个步骤:建立一个空的模型对象,遍历一次语料库建立词典,第二次遍历语料库建立神经网络模型可以通过分别执行 model=gensim.models.Word2Vec() ,model.build_vocab(sentences),model.train(sentences)来实现。

训练时可以指定以下参数:

  • min_count 指定了需要训练词语的最小出现次数,默认为 5。
  • size 指定了训练时词向量维度,默认为 100。
  • worker 指定了完成训练过程的线程数,默认为 1 不使用多线程。
  • model.wv.save_word2vec_format(‘word2vec_model.txt’,binary=False)保存模型。
  • gensim.models.KeyedVectors.load_word2vec_format('word2vec_model.txt',binary=False)加载模型。

计算词语相似度
  word2vec 是一个将单词转换成向量形式的工具。可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
  根据模型训练的结果,可以进行各种相似度的计算:
  (1) 找出近义词中最相似的 topn 个词语:model.most_similar(positive=['word1','word2'], topn=10)
  (2) 找出反义词中最相似的 topn 个词语:model.most_similar(negative=['word1','word2'], topn=10)
  (3) 找出气质不合的词语:model.doesnt_match(['word1','word2','word3','word4'])
  (4) 计算两个词语的相似度:model.similarity('word1','word2')


2020.08.11

实验一

实验题目及内容:
  利用jieba对《网络新闻实体发现与情感识别》案例数据进行分词。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# -*- coding:utf-8 -*-
"""
@author:SiriYang
@file:exam1.py
@time:2020/8/6 16:40
"""

import json
import jieba
import codecs
import pandas as pd
import re
from langconv import *

def read_data(filePath):
f=codecs.open(filePath,'r','utf-8')
data=[]
for line in f.readlines():
news=json.loads(line.strip())
data.append(news)
return pd.DataFrame(data)

data=read_data("./dataset/news/train.txt")

print(data.info())

data['text']=data['title']+" "+data['content']
pat=re.compile("<[^>]+>",re.S)
data['text']=data['text'].apply(lambda x:pat.sub('',x))
data['text']=data['text'].apply(lambda x:x.lower())
data['text']=data['text'].apply(lambda x:Converter('zh-hans').convert(x))

data['text']=data['text'].map(lambda x:[w for w in list(jieba.cut(x)) if len(w)!=1])

print(data)

实验步骤:
  这里以训练集为例,首先将训练集文件读取进来,训练集源文件为txt文档,文档中记录的每一行为一个样例,且一行为一个独立的json格式字符串。所以在读取文件的时候要一行行的进行读取,然后单独转换成json对象,最后拼接起来转换为DataFrame。
  由于样例的‘title’字段和‘content’字段均为文本内容,我们将其拼接为‘text’字段统一处理。然后对数据进行预处理,主要是使用正则表达式去除文本中的html标签,然后将字母归一化为小写,最后再将繁体字转化为简体。
  数据预处理完成以后对DataFrame使用jieba进行逐行分词,这里使用的是精确模式,最后分词结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
         newsId  ...                                               text
0 4e36d02a ... [sia, 智慧, 工厂, 誉洋以, 取胜, 第十七届, 上海, 国际, 工业, 自动化, ...
1 cb8e8b79 ... [数据, 可视化, 应用领域, 探析, 数据, 热度, 无需, 多言, 业内, 众多, 关于...
2 f85c18e2 ... [大车, 发大财, 时代, 一去不返, 货运, 行业, 还有, 春天, 过年, 期间, 一些...
3 889199b4 ... [水泥, 路面, 起砂, 如何, 处理, 修补, 材料, 发生, 脱落, 水泥, 路面, 起...
4 a811d20e ... [股市, 高位, 继续, 几类, 股票, 有望, 成为, 热点, 我们, 今天, 开始, 复...
... ... ... ...
29995 9b687c87 ... [陆毅, 女儿, 贝儿, 愿望, 姨夫, 起来, 网友, 郭京飞, 最近, 最火, 男孩, ...
29996 87331eb7 ... [为什么, 韩国, 人均, gdp, 达到, 30000, 美元, 国民, 幸福感, 特睿,...
29997 e84c7dfe ... [阿里, ceo, 陈航, 洛钉, 设计, 行业, 生态, 打造, 数字化, 工作, 方式,...
29998 ff066000 ... [真人, 电视剧, 黑暗, 追加, 新卡司, 之前, 企鹅, 曾经, 大家, 报道, 斯蒂芬...
29999 211a6d4c ... [罗素, 兄弟, 配乐, 团队, 合照, 复仇者, 联盟, 配乐, 完成, 复仇者, 联盟,...

注意:
  这里使用的繁体转简体代码为第三方库,源码下载地址。


实验二

实验题目及内容:
  利用Gensim训练《网络新闻实体发现与情感识别》案例数据的word2vec词向量。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# -*- coding:utf-8 -*-
"""
@author:SiriYang
@file:exam2.py
@time:2020/8/11 17:38
"""

import json
import jieba
import gensim
import codecs
import pandas as pd
import numpy as np
import re
from langconv import *

def read_data(filePath):
f=codecs.open(filePath,'r','utf-8')
data=[]
for line in f.readlines():
news=json.loads(line.strip())
data.append(news)
return pd.DataFrame(data)

data=read_data("./dataset/news/train.txt")

print(data.info())

data['text']=data['title']+" "+data['content']
pat=re.compile("<[^>]+>",re.S)
data['text']=data['text'].apply(lambda x:pat.sub('',x))
data['text']=data['text'].apply(lambda x:x.lower())
data['text']=data['text'].apply(lambda x:Converter('zh-hans').convert(x))

data['text']=data['text'].map(lambda x:[w for w in list(jieba.cut(x)) if len(w)!=1])

print(data)

model=gensim.models.Word2Vec(list(data['text']),seed=2020,iter=20,size=100,window=8,min_count=1,workers=5)
model.wv.save_word2vec_format('word2vec_model.txt',binary=False)

实验步骤:
  在实验一的基础上继续进行本实验,将分割好的词语列表放到gensim的Word2Vec函数中进行训练,训练结束后再将模型保存。我们这里将词向量的维度设为了100,打开保存好的模型文件可以看到如下内容:

1
2
3
4
5
331479 100
一个 -2.9543703 0.40846577 -0.5431666 -1.6735626 -1.2815336 0.8624124 1.0189455 1.7838436 -1.022242 3.0561624 -0.100573584 0.42621598 0.6184984 -0.10269285 -1.8921386 -1.999164 0.82873434 1.5804996 -2.3367221 0.3191383 -0.31012672 1.7445742 0.38274065 0.04657846 -5.7388887 1.3818592 -2.2845824 4.9361963 3.1532116 2.239039 2.2759771 6.2109447 3.1862142 -0.5288587 0.8814485 2.1301575 -0.8355263 -3.2366512 0.64332616 -0.78478944 2.0819995 -0.0637713 0.24133417 0.4824701 1.1464949 3.9923027 1.9160081 2.3032367 -0.25454354 -1.8951049 -0.32476562 -2.7848485 -0.45643705 -1.8205899 1.0449423 -1.3701609 -3.6382625 -1.8185146 -1.4585057 0.71225846 -3.6631854 5.4191866 -1.9887836 2.4483976 2.7185755 0.10485916 -3.987915 2.2250257 3.8111324 1.4206866 -0.24558468 -0.35483566 -0.44382682 -2.34355 0.10793342 1.990353 0.67111135 -0.105904154 -2.2700696 1.3723196 -2.2631168 0.5991995 1.9250827 -1.5265771 1.4503826 0.76192313 -3.6390262 1.18864 7.1293955 1.2701312 -1.1622014 1.1178092 -1.0275929 1.7085198 -2.2832963 1.0260525 1.2103077 -1.953793 -3.391294 -1.9867126
公司 0.7528238 2.8020039 -1.5962037 0.57337385 -1.3799661 0.89587796 0.12281007 -1.6244811 -1.2666698 -0.16841757 -1.1389644 -1.7247378 1.2986612 0.2529018 -0.8018895 1.0509753 4.582619 0.07396537 2.7828608 -1.9121126 2.6365657 -1.5044155 -1.4900594 -1.6279094 -2.40645 0.6358585 -1.2390139 0.29591542 -3.5968888 1.7744545 -1.8685383 -2.0595894 1.4083129 -3.505972 -3.5044382 -3.6350799 3.0260172 -1.7276288 -3.7659376 -3.3015976 0.36432683 0.44618255 -4.011596 4.287256 1.0925053 1.5096042 1.287976 2.9665148 -0.3010392 -3.9228337 -3.1967494 2.3498063 2.3823667 -0.056968488 -0.7027833 4.954933 -1.8888243 -0.7737737 -2.4074357 -1.9491787 -1.8745638 -1.451344 -0.66245675 3.0194952 0.95030624 1.8099195 2.1070178 4.5179124 -0.76647264 -0.9358328 -0.23985943 3.324887 -6.83508 4.6869936 0.9672083 2.1273208 2.8496816 1.5307391 -0.04569776 1.170762 -1.6477104 -0.82297456 0.2694782 -1.5191596 4.489827 1.3816216 -1.3441077 0.13548811 -0.9749054 -2.2224412 1.1888804 1.3807847 -1.6169789 0.7973699 -1.1261601 0.96936506 -0.54377866 -2.0738425 0.8384294 -1.2135742
可以 -1.935615 0.889262 2.0930603 0.25877807 1.3465922 3.9986567 4.769509 0.791055 -2.804003 1.3252118 1.9392366 -3.2953794 0.3867952 1.4177195 -3.244748 0.067865916 -0.06796573 0.9730264 -6.560307 2.6217303 4.154851 -2.0550506 2.223803 -1.7741559 -4.4826417 2.8158097 -0.3563124 4.236512 0.29612353 -2.6452265 2.1226726 2.6904995 6.361071 -1.4718906 1.167341 1.1615294 1.7996455 2.1341043 -0.076324284 -3.9059246 3.1386893 5.556535 -0.3032131 -1.4180988 -0.48950428 0.8332544 -3.7488625 0.082893655 0.18153422 -0.16104257 1.4172183 -0.69410825 -2.2571833 -1.1896874 2.0864406 -2.3280969 -0.6640874 -1.8553829 3.6438801 -1.249327 -2.6982856 0.21544707 -2.0969331 0.69428205 3.0300732 1.9163817 3.207114 0.7329702 -0.8496769 1.0736156 1.6193955 0.4775568 -3.5823505 -0.4749121 2.2092755 2.3392153 2.8615038 1.5846953 -1.2491542 -1.6335782 3.368545 -4.1647 2.35437 -1.6244526 1.1864591 -1.7465752 -4.604822 -2.0864651 2.2012763 0.112737246 0.8295923 0.06322443 1.1718814 0.11171802 -1.167253 -1.3343004 3.2585244 -1.7461014 -2.6355817 -0.10784309
...

  整个词向量模型的大小为375MB,经过分词以后总共分割出了331479个不同的词语,然后每个词语后有100个数值,即为词向量的值。然后我们使用如下代码将保存好的模型读取进来,然后计算和智慧最相似与最不相似的词语:

1
2
3
model=gensim.models.KeyedVectors.load_word2vec_format('word2vec_model.txt',binary=False)
print(model.most_similar(positive=['数据'],topn=5))
print(model.most_similar(negative=['数据'],topn=5))

  输出结果如下,可以看到效果还算可以。

1
2
[('数据分析', 0.6511616706848145), ('统计数据', 0.6379164457321167), ('历史数据', 0.6222556829452515), ('数据资料', 0.6182267665863037), ('信息', 0.6004210114479065)]
[('清莱', 0.4781411290168762), ('曾吐槽', 0.47524160146713257), ('颜王', 0.4626086950302124), ('最穷', 0.4502883553504944), ('举杯', 0.4496344327926636)]
-------- 本文结束 感谢阅读 --------
相关文章
  • 中医药天池大数据竞赛--中药说明书实体识别挑战
  • NLP综合实践(三)
  • NLP综合实践(二)
  • 2020华为云大数据挑战赛-正式赛(2)
  • 2020华为云大数据挑战赛-正式赛(1)
觉得文章写的不错的话,请我喝瓶怡宝吧!😀
SiriYang 微信支付

微信支付

SiriYang 支付宝

支付宝

  • 本文标题: NLP综合实践(一)
  • 本文作者: SiriYang
  • 创建时间: 2020年08月03日 - 15时08分
  • 修改时间: 2021年10月29日 - 18时10分
  • 本文链接: https://blog.siriyang.cn/posts/20200803150248id.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
学习笔记 Python 机器学习 数据挖掘 NLP
SiriBlog一周年总结
算法常用模板:并查集
  • 文章目录
  • 站点概览
SiriYang

SiriYang

努力搬砖攒钱买镜头的摄影迷
318 日志
33 分类
88 标签
RSS
GitHub E-Mail
Creative Commons
Links
  • 友情链接
  • 作品商铺

  1. 2020.08.03
    1. NLP基本概念
  2. 2020.08.05
    1. 正则表达式
  3. 2020.08.06
    1. jieba的使用
    2. Gensim 的使用
  4. 2020.08.11
    1. 实验一
    2. 实验二
蜀ICP备19008337号 © 2019 – 2025 SiriYang | 1.7m | 25:40
0%