数据分析案例-基于亚马逊智能产品评论的探索性数据分析

2024-02-15 19:20

本文主要是介绍数据分析案例-基于亚马逊智能产品评论的探索性数据分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

一、实验背景

1.1背景概述

1.2实验目的

二、数据描述

2.1数据来源

2.2变量介绍

三、实验步骤

3.1导入模块和数据

3.2数据预处理

3.2.1基本处理

3.3.2数据清洗

3.3探索性数据分析 

3.3.1词云图绘制

3.3.2评论极性判断

3.3.3评论可读性 

3.3.4评论阅读时间

四、实验总结

源代码


一、实验背景

1.1背景概述

        数据成为新时代企业不可或缺的资产,不同行业、不同领域的公司都越来越注重数据在公司运营中发挥的作用,从谷歌、亚马逊到阿里、百度、腾讯,都因其拥有大量的用户注册和运营信息,成为天然的大数据公司。显然亚马逊早已开始尝试从数据中发掘价值,长期以来通过大数据分析,尝试定位客户并获取客户反馈,其不仅从每个用户的购买行为中获得信息,还将每个用户在网站上的所有行为都记录下来,充分体现了亚马逊对数据价值的高度敏感和重视及其强大的挖掘能力。

        探索性数据分析(EDA)是指对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通过作图、制表、方程拟合、计算特征量等手段探索数据结构和规律的一种数据分析方法。是一种分析数据集以概括其主要特征的方法,通常使用可视化技术。完成一个机器学习项目需要有条理的规划方法,无法在收集齐所需要的数据后直接跳到模型搭建的阶段,因此探索性数据分析显得尤为重要。

1.2实验目的

        时代与技术的发展使得数据的获取与挖掘成为可能。本实验旨在通过Python对亚马逊的文本数据集进行探索性数据分析,包括产品的评论文本、名称等,使用这些数据进行探索并从中形成见解。

二、数据描述

2.1数据来源

数据来源于Kaggle网站的亚马逊智能产品评论,时间区间为2017年9月至2018年10月,共34656行,21列。部分原始数据如图2-1所示。

图2-1 亚马逊产品评论数据集原始数据

2.2变量介绍

原始数据集中共包含21个属性,变量说明如表2-1所示。

变量名

说明

id

用户编号

name

产品名称

asins

产品编号

brand

品牌

categories

产品类别

keys

类别关键字

manufacturer

制造商

reviews.date

评论时间

reviews.dateAdded

追评时间

reviews.dateSeen

评论可见时间

reviews.didPurchase

reviews.doRecommend

是否推荐

reviews.id

评论编号

reviews.numHelpful

认为评论有用人数

reviews.rating

评分

reviews.souecrURLs

评论链接

reviews.text

评论文本

reviews.title

评论标题

reviews.userCity

用户所在地

reviews.userProvince

用户所在区

reviews.username

用户名

表2-1 亚马逊产品评论数据集字段说明

三、实验步骤

3.1导入模块和数据

在进行探索性数据分析之前需要进行基本的数据预处理,因此首先需要导入相关库并读取数据集。

图3-1 导入实验所需模块并读取数据

如图3-1所示,运行以上代码,若输出结果为“初始数据集大小:(34660,21)”则表示数据导入成功并计算出原始数据集的大小。

3.2数据预处理

3.2.1基本处理

原始数据共包含21个属性,在本实验中主要用到“name、reviews.text、reviews.doRecommend、reviews.numHelpful”等信息,即产品名称、评论文本、是否推荐及认为该评论有用人数。因此对导入数据进行删减,删除其他列,对应的程序及输出结果如图3-2、图3-3所示。

图3-2 删减数据

图3-3 删减后的部分数据

删除不必要的列后,通过程序查询是否存在空值并进行删除,同时删除评论数小于500的产品,确保每个产品拥有足够数量的评论数。对应的程序如图3-4所示。

图3-4 处理空值并删除数据

图3-5为处理前后的结果输出,删除后显示数据集中不存在空值,使用lambda函数和filter()过滤数据集,输出结果显示数据集中剩余产品数量为8。

图3-5 处理空值并删除数据

3.3.2数据清洗

文本数据中包含大量的干扰项,如符号、标点符号、停用词等,因此需要对文本进行清洗。

(1)“产品名称”列

首先通过程序查看8种产品的名称,某些产品名称包含由三个连续逗号(,,,)分隔的重复名称。对产品名称做一下文本清洗,其处理过程及处理结果分别如图3-6、图3-7所示:

图3-6 处理“产品名称”列的程序

图3-7 处理前后的“产品名称”列

(2)“评论文本”列

“评论文本”列是后续探索性数据分析的主要对象,因此需要进行细致的处理,在观察数据集中的“评论文本”列后进行处理,主要包括扩展缩略语、改变字母大小写、删除数字及标点、文档术语矩阵创建等步骤。

①扩展缩略语

主要通过创建常用英语缩略语词典的方式将评论中所包含的缩略语映射到对应的扩展形式。

②改变字母大小写

NLP中,即使两个单词相同,但大小写不同,模型也是将其作为不同的单词来处理,因此为方便下一步分析,使用low()函数将文本转换为小写形式。

③删除停用词

借助lambda函数将包括标点符号、数字及包含数字的单词删除。

④创建文档术语矩阵

文档术语矩阵是指一个词在文档集合中出现的频率,在本实验中使用spacy中的函数对每条评论进行停用词删除及词形还原,对每个产品的评论进行汇总,最终生成文档术语矩阵。

相关的程序如图3-8、图3-9所示。

 图3-8 “评论文本”列处理程序

图3-9 “评论文本”列处理程序

输出的结果如图3-10、图3-11所示。

图3-10 处理前后的评论文本

 图3-11 生成的文档术语矩阵(部分)

3.3探索性数据分析 

 完成以上的数据收集及预处理工作后对其进行探索性数据分析。

3.3.1词云图绘制

        词云图能够过滤掉大量的文本信息,使用文本中重要的、出现频率较高的词组制图,使得浏览者通过图片就可以得到重要的信息,并从文本信息中快速形成见解。

        通过上述处理生成了每种产品的文档术语矩阵,基于此通过词云来可视化这些单词,将频繁出现的单词以更大的尺寸显示出来。其中处理的程序及生成的结果图分别如图3-12、图3-13、图3-14、图3-15、图3-16、图3-17、图3-18、图3-19、图3-20所示。

        这8种产品均是从原始数据集中删选出评论>500条的产品,在一定程度上也能说明这8种产品销量高。从生成的词云图中可以看到,大部分产品的高频词汇都有“great”、“good”、“easy”等带有正向情感的单词,这也说明用户对这8种产品总体是呈积极情绪的。

图3-12 生成词云的程序

图3-13 产品评论词云图

 图3-14 产品评论词云图

图3-15 产品评论词云图

 图3-16 产品评论词云图

图3-17 产品评论词云图 

图3-18 产品评论词云图

图3-19 产品评论词云图

 图3-20 产品评论词云图

3.3.2评论极性判断

        通过词云图的绘制可以了解消费者对每种产品的情感倾向,但若想进一步研究该问题,了解产品的改进方向,可以对每个产品的评论进行情感分析,通过分析文本是正面或是负面来了解消费者的需求,从而对产品进行改进。通过Python中的TextBlob库来检查评论的极性,并通过条形图的绘制对每个产品的极性进行比较。其中处理的程序及生成的结果图分别如图3-21、图3-22、图3-23、图3-14所示。

        图3-21和图3-22分别表示对评论文本进行极性判断的程序与结果,polarity的分数是一个范围为 [-1.0 , 1.0 ] 浮点数, 正数表示积极,负数表示消极。通过结果可以看出,在这8种产品中Fire Kids Edition Tablet和Kindle Voyage E-reader两款产品的数值偏低,因此可以针对这两种产品进行进一步的分析,以更好地了解消费者的需求。

图3-21 产品评论极性判断程序

图3-22 产品评论极性条形图

数据集中的“reviews.doRecommend”属性表示消费者是否推荐购买该产品,有True、Flase两个值,True表示推荐购买,Flase表示不推荐购买,通过了解购买某一产品的消费者是否推荐购买该产品也可了解消费者对该商品的情感趋势。以推荐购买某产品的消费者百分比作为横轴绘制条形图,其程序和结果如图3-23、图3-24所示。可以看到产品 Fire Kids Edition Tablet 的推荐比例最低,它的评论也较负面。

图3-23 产品推荐情况程序

图3-24 产品推荐情况

3.3.3评论可读性 

        Textstat是一个可以计算英文可阅读性的python包,通常用于判断特定语料库的可读性与复杂性,内置有Flesch阅读容易度、Dale Chall可读性评分和Gunning Fog指数。每个指标使用不同的方法确定文档的可读性级别。

 图3-25 产品评论可读性程序

图3-26 产品评论可读性结果

3.3.4评论阅读时间

         数据集中的“reviews.numHelpful”属性表示消费者认为该评论是否有帮助,若该数字大于等于1,则表示该评论对消费者有所帮助,若该数字小于1,则表示该评论对消费者暂无帮助。textstat库中的reading_time()函数将某段文本作为参考,以秒为单位返回该文本的阅读时间,调用该函数分别计算有用评论与无用评论的阅读时间。结果显示有用评论的阅读时间是无用评论阅读时间的将近两倍,这从侧面说明了较长的评论对消费者更有帮助。相关程序及结果如图3-27、图3-28所示。

图3-27 评论阅读时间

图3-28 评论阅读时间结果

四、实验总结

        通过此次实验,对Python、EDA、自然语言处理有了进一步的了解。本实验主题为“基于评论的探索性数据分析”,主要针对亚马逊网站部分产品的相关文本信息,如评论文本、是否被推荐等属性进行探索性数据分析。在对数据进行基本的处理及必要的清洗后,从词云绘制、评论极性判断、评论可阅读性、评论阅读时间等角度为出发点进行探索。主要得出以下推论:

(1)在数据集所涉及评论数较多的产品中,消费者总体呈满意态度;

(2)Fire Kids Edition Tablet 属于本数据集中负面评论较多且最不被推荐的产品,可针对这款产品进行进一步分析,了解其不足之处并明确完善方向;

(3)有用评论的阅读时间高于非有用评论,这意味着人们认为较长的评论更具有帮助性。

源代码

import numpy as np  
import pandas as pd  
# 可视化 
import matplotlib.pyplot as plt  
# 正则化  
import re  
# 处理字符串
import string  
# 执行数学运算 
import spacy  # 导入数据并进行基本的预处理
df=pd.read_csv('dataset.csv',low_memory=False)
print("初始数据集大小:",df.shape) 
#1.删除不必要的列
df=df[['name','reviews.text','reviews.doRecommend','reviews.numHelpful']]  
print("数据集大小:",df.shape)
print('*********处理后的部分数据*********')
pd.set_option('display.max_columns', None)
print(df.head(5))
#2.删除空值
print('*********检查数据集中是否存在空值*********')
print(df.isnull().sum()) 
df.dropna(inplace=True)
print('*********空值处理结束*********')  
print(df.isnull().sum())
#3.删除评论数<500的产品
df=df.groupby('name').filter(lambda x:len(x)>500).reset_index(drop=True)
print('*********处理结果*********')  
print('产品数量:',len(df['name'].unique()))
#4.将不能直接处理的数据类型转换为整形 
df['reviews.doRecommend']=df['reviews.doRecommend'].astype(int)  
df['reviews.numHelpful']=df['reviews.numHelpful'].astype(int) #  清洗文本数据
#1.处理产品名称
print('*********产品名称*********') 
print(df['name'].unique())
df['name']=df['name'].apply(lambda x: x.split(',,,')[0])
print('*********处理后的产品名称*********') 
print(df['name'].unique())
#2.处理评论文本
print('*********原始数据集的评论*********') 
for index,text in enumerate(df['reviews.text'][35:40]):  print('Review %d:\n'%(index+1),text)
#2.1扩展缩略语
# 缩写词典 
contractions_dict = { "ain't": "are not","'s":" is","aren't": "are not",  "can't": "cannot","can't've": "cannot have",  "'cause": "because","could've": "could have","couldn't": "could not",  "couldn't've": "could not have", "didn't": "did not","doesn't": "does not",  "don't": "do not","hadn't": "had not","hadn't've": "had not have",  "hasn't": "has not","haven't": "have not","he'd": "he would",  "he'd've": "he would have","he'll": "he will", "he'll've": "he will have",  "how'd": "how did","how'd'y": "how do you","how'll": "how will",  "I'd": "I would", "I'd've": "I would have","I'll": "I will",  "I'll've": "I will have","I'm": "I am","I've": "I have", "isn't": "is not",  "it'd": "it would","it'd've": "it would have","it'll": "it will",  "it'll've": "it will have", "let's": "let us","ma'am": "madam",  "mayn't": "may not","might've": "might have","mightn't": "might not",  "mightn't've": "might not have","must've": "must have","mustn't": "must not",  "mustn't've": "must not have", "needn't": "need not",  "needn't've": "need not have","o'clock": "of the clock","oughtn't": "ought not",  "oughtn't've": "ought not have","shan't": "shall not","sha'n't": "shall not",  "shan't've": "shall not have","she'd": "she would","she'd've": "she would have",  "she'll": "she will", "she'll've": "she will have","should've": "should have",  "shouldn't": "should not", "shouldn't've": "should not have","so've": "so have",  "that'd": "that would","that'd've": "that would have", "there'd": "there would",  "there'd've": "there would have", "they'd": "they would",  "they'd've": "they would have","they'll": "they will",  "they'll've": "they will have", "they're": "they are","they've": "they have",  "to've": "to have","wasn't": "was not","we'd": "we would",  "we'd've": "we would have","we'll": "we will","we'll've": "we will have",  "we're": "we are","we've": "we have", "weren't": "were not","what'll": "what will",  "what'll've": "what will have","what're": "what are", "what've": "what have",  "when've": "when have","where'd": "where did", "where've": "where have",  "who'll": "who will","who'll've": "who will have","who've": "who have",  "why've": "why have","will've": "will have","won't": "will not",  "won't've": "will not have", "would've": "would have","wouldn't": "would not",  "wouldn't've": "would not have","y'all": "you all", "y'all'd": "you all would",  "y'all'd've": "you all would have","y'all're": "you all are",  "y'all've": "you all have", "you'd": "you would","you'd've": "you would have",  "you'll": "you will","you'll've": "you will have", "you're": "you are",  "you've": "you have"}  # 寻找缩略语(正则表达式)
contractions_re=re.compile('(%s)' % '|'.join(contractions_dict.keys()))  # 将缩略语扩展
def expand_contractions(text,contractions_dict=contractions_dict):  def replace(match):  return contractions_dict[match.group(0)]  return contractions_re.sub(replace, text)  # 扩展评论缩写
df['reviews.text']=df['reviews.text'].apply(lambda x:expand_contractions(x))  
#2.2评论文本改为小写
df['cleaned']=df['reviews.text'].apply(lambda x: x.lower())
#2.3删除数字、包含数字的单词和标点
df['cleaned']=df['cleaned'].apply(lambda x: re.sub('\w*\d\w*','', x))
df['cleaned']=df['cleaned'].apply(lambda x: re.sub('[%s]' % re.escape(string.punctuation), '', x))
df['cleaned']=df['cleaned'].apply(lambda x: re.sub(' +',' ',x))
#查看文本
print('*********处理后的评论文本*********') 
for index,text in enumerate(df['cleaned'][35:40]):  print('Review %d:\n'%(index+1),text) 
#2.3删除停用词、词性还原、文档术语矩阵创建 
nlp = spacy.load('en_core_web_sm',disable=['parser', 'ner'])  
df['lemmatized']=df['cleaned'].apply(lambda x: ' '.join([token.lemma_ for token in list(nlp(x)) if (token.is_stop==False)]))  
df_grouped=df[['name','lemmatized']].groupby(by='name').agg(lambda x:' '.join(x))  
df_grouped.head()     
# Creating Document Term
from sklearn.feature_extraction.text import CountVectorizer
cv=CountVectorizer(analyzer='word')  
data=cv.fit_transform(df_grouped['lemmatized'])  
df_dtm = pd.DataFrame(data.toarray(), columns=cv.get_feature_names())  
df_dtm.index=df_grouped.index
print('*********文档术语矩阵(部分)*********')   
print(df_dtm.head(3)) #绘制词云
#1.导入包  
from wordcloud import WordCloud  
from textwrap import wrap  
#2.生成词云  
def generate_wordcloud(data,title):  wc = WordCloud(width=400, height=330, max_words=150,colormap="Dark2").generate_from_frequencies(data)  plt.figure(figsize=(10,8))  plt.imshow(wc, interpolation='bilinear')  plt.axis("off")  plt.title('\n'.join(wrap(title,60)),fontsize=13)  plt.show()  
#3.置换文档术语矩阵 
df_dtm=df_dtm.transpose()  
#4.为每个产品生成词云
print('*********8种产品的词云图*********')  
for index,product in enumerate(df_dtm.columns):generate_wordcloud(df_dtm[product].sort_values(ascending=False),product)#检查评论极性(TextBlob是一个用Python编写的开源的文本处理库。 它可以用来执行很多自然语言处理的任务,比如,词性标注,名词性成分提取,情感分析,文本翻译,等等。)
from textblob import TextBlob  
df['polarity']=df['lemmatized'].apply(lambda x:TextBlob(x).sentiment.polarity)
#1.查看最消极、积极的评价
print('*********3条随机的积极评论*********')  
for index,review in enumerate(df.iloc[df['polarity'].sort_values(ascending=False)[:3].index]['reviews.text']):  print('Review {}:\n'.format(index+1),review)
print('*********3条随机的消极评论*********')
for index,review in enumerate(df.iloc[df['polarity'].sort_values(ascending=True)[:3].index]['reviews.text']):  print('Review {}:\n'.format(index+1),review)
#2.画出每个产品的评论的极性并进行比较
product_polarity_sorted=pd.DataFrame(df.groupby('name')['polarity'].mean().sort_values(ascending=True))     
plt.figure(figsize=(16,8))  
plt.xlabel('Polarity')  
plt.ylabel('Products')  
plt.title('Polarity of Different Amazon Product Reviews')  
polarity_graph=plt.barh(np.arange(len(product_polarity_sorted.index)),product_polarity_sorted['polarity'],color='purple',)  
#条形图显示产品名称  
for bar,product in zip(polarity_graph,product_polarity_sorted.index):  plt.text(0.005,bar.get_y()+bar.get_width(),'{}'.format(product),va='center',fontsize=11,color='white')  
#图上标注极性值 
for bar,polarity in zip(polarity_graph,product_polarity_sorted['polarity']):  plt.text(bar.get_width()+0.001,bar.get_y()+bar.get_width(),'%.3f'%polarity,va='center',fontsize=11,color='black')  
plt.yticks([])  
plt.show()#查看推荐某个产品的用户数量,获取评价者的百分比并可视化
recommend_percentage=pd.DataFrame(((df.groupby('name')['reviews.doRecommend'].sum()*100)/df.groupby('name')['reviews.doRecommend'].count()).sort_values(ascending=True))  
plt.figure(figsize=(16,8))  
plt.xlabel('Recommend Percentage')  
plt.ylabel('Products')  
plt.title('Percentage of reviewers recommended a product')  
recommend_graph=plt.barh(np.arange(len(recommend_percentage.index)),recommend_percentage['reviews.doRecommend'],color='green')  
#1.条形图显示产品名称  
for bar,product in zip(recommend_graph,recommend_percentage.index):  plt.text(0.5,bar.get_y()+0.4,'{}'.format(product),va='center',fontsize=11,color='white')  
#2.图表上标注推荐百分比 
for bar,percentage in zip(recommend_graph,recommend_percentage['reviews.doRecommend']):  plt.text(bar.get_width()+0.5,bar.get_y()+0.4,'%.2f'%percentage,va='center',fontsize=11,color='black')    
plt.yticks([])  
plt.show()#查看评论可读性
recommend_percentage=pd.DataFrame(((df.groupby('name')['reviews.doRecommend'].sum()*100)/df.groupby('name')['reviews.doRecommend'].count()).sort_values(ascending=True))  
import textstat  
df['dale_chall_score']=df['reviews.text'].apply(lambda x: textstat.dale_chall_readability_score(x))  
df['flesh_reading_ease']=df['reviews.text'].apply(lambda x: textstat.flesch_reading_ease(x))  
df['gunning_fog']=df['reviews.text'].apply(lambda x: textstat.gunning_fog(x))
print('*********评论可读性的不同指标*********')    
print('有用评论的Dale Chall评分:',df[df['reviews.numHelpful']>1]['dale_chall_score'].mean())  
print('无用评论的Dale Chall评分:',df[df['reviews.numHelpful']<=1]['dale_chall_score'].mean())    
print('有用评论的Flesch阅读评分:',df[df['reviews.numHelpful']>1]['flesh_reading_ease'].mean())  
print('无用评论的Flesch阅读评分:',df[df['reviews.numHelpful']<=1]['flesh_reading_ease'].mean())    
print('有用评论的Gunning Fog指数:',df[df['reviews.numHelpful']>1]['gunning_fog'].mean())  
print('无用评论的Gunning Fog指数:',df[df['reviews.numHelpful']<=1]['gunning_fog'].mean())
#计算文档的读取时间
print('*********阅读时间*********')
df['reading_time']=df['reviews.text'].apply(lambda x: textstat.reading_time(x))     
print('有用评论的阅读时间:',df[df['reviews.numHelpful']>1]['reading_time'].mean())  
print('无用评论的阅读时间:',df[df['reviews.numHelpful']<=1]['reading_time'].mean())  

资料获取,更多粉丝福利,关注下方公众号获取

在这里插入图片描述

这篇关于数据分析案例-基于亚马逊智能产品评论的探索性数据分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/712304

相关文章

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

MySQL 复合查询案例详解

《MySQL复合查询案例详解》:本文主要介绍MySQL复合查询案例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录基本查询回顾多表笛卡尔积子查询与where子查询多行子查询多列子查询子查询与from总结合并查询(不太重要)union基本查询回顾查询

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI