【实战学习】电商领域搜索——信息检索(1)


前言

学习任务
在这里插入图片描述

基本思路:
首先用read_csv方式读取数据——>再使用jieba对句子进行搜索引擎的分词——>再将分完后的词将其合成一个str,便于后续计算tf-idf——>使用Scikit-learn计算tf-idf,将其处理成向量

一、文本预处理

1.数据的读取——panda

tsv格式的读取

与读取csv的区别就在于加一个属性sep,并设置为\t即可

具体参照:https://blog.csdn.net/zgljl2012/article/details/79109525
read_csv方式:https://www.jianshu.com/p/ebb64a159104

数据的编码

UTF-8和GBK的区别
(但不太用得到)

https://zhidao.baidu.com/question/133119038.html

2.中文分词——jieba

jieba分词:强大的Python 中文分词库
主要功能:是做中文分词,可以进行简单分词、并行分词、命令行分词,当然它的功能不限于此,目前还支持关键词提取、词性标注、词位置查询等
主要运用:jieba.lcut_for_search()

github:https://github.com/fxsjy/jieba/blob/master/README.md

3.Scikit-learn计算TF-IDF

如何使用Scikit-learn计算TF-IDF

https://www.cnblogs.com/caiyishuai/p/9511567.html

sklearn——CountVectorizer详解

https://blog.csdn.net/weixin_38278334/article/details/82320307

计算TF-IDF的多种方法

https://blog.csdn.net/asialee_bird/article/details/81486700

疑惑:可以使用jieba自带的函数去计算TF-IDF吗?
在jieba自带的文档里提到:
在这里插入图片描述
其是将文本划分和关键字提取放在一起了吗?那它是如何划分的?是否损失了引擎专用的文本划分的优点?
在尝试过程中不知道如何去让所有的句子放在一起,我认为它的待提取文本就只针对一个文本段,而不是很多篇章,所以不知道如何使用。

4.代码示例

import pandas as pd
import jieba
import jieba.analyse
from sklearn.feature_extraction.text import CountVectorizer, HashingVectorizer, TfidfTransformer,TfidfVectorizer

#数据读入
fileName = 'D:/study/alyun_data/corpus.tsv'
df_train=pd.read_csv(fileName, sep='\t', header=None,index_col=0).astype(str)
list_train=df_train[1].tolist()

#中文
res=[]
i=0
for term in list_train:
    seg_list = jieba.lcut_for_search(term)
    seg_str=' '.join(seg_list)
    res.append(seg_str)
    if i %10000==0:
        print(i/10000)
    i+=1
# print(res)


#tf-idf权重计算
#该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频
vectorizer = CountVectorizer(max_df=0.8,max_features=100000)
#该类会统计每个词语的tf-idf权值
tf_idf_transformer = TfidfTransformer()
#将文本转为词频矩阵并计算tf-idf
tf_idf = tf_idf_transformer.fit_transform(vectorizer.fit_transform(res))
word=vectorizer.get_feature_names()#获取词袋模型中的所有词语
#将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重
weight = tf_idf.toarray()

总结

疑惑:在对文本进行编码的时候,(文本==向量),这个矩阵是否过度稀疏(有0的个数太多),在对特征进行取舍的时候,该如何进行?
在计算相似度的时候,或许可以使用余弦相似度的方法?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值