亚马逊标题分词

news/2024/7/4 2:58:20 标签: 亚马逊标题分词统计, nltk

 导包

import pandas as pd
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem.porter import PorterStemmer
from nltk.text import Text
from nltk import ngrams,FreqDist

读数据

data = pd.read_csv(r'D:\数据\亚马逊搜索词排名\asin.csv',encoding = 'gb18030')
women = data.loc[data['catelogy'].str.startswith('Women')]
men = data.loc[data['catelogy'].str.startswith('Men')]
boy = data.loc[data['catelogy'].str.startswith('Boy')]
girl = data.loc[data['catelogy'].str.startswith('Girl')]

停用词设置

english_stopwords = stopwords.words("english")
english_punctuations = [',', '.', ':', ';', '?', '(', ')', '[', ']', '!', '@', '#', '%', '$', '*', '…',"'s","''",'&','&','&','‘','’',
                        '”','~',"''",'/',"'",'|','|','+','-','``']
english_stopwords.extend(english_punctuations)

构建单词处理和统计函数

def process_keywords(keywords,english_stopwords):
    #分词
    words = []
    for i in keywords:
        words.extend(word_tokenize(str(i)))
    words_lower = [i.lower() for i in words]
    #去除停用词
    words_clear = [i for i in words_lower if i not in english_stopwords]
    #词干化处理,并恢复成统一格式
    st = PorterStemmer()
    words_stem = [st.stem(i) for i in words_clear]
    
    words_dicts = [{st.stem(i):i} for i in words_clear]
    words_dict = {}
    for i in words_dicts:
        words_dict.update(i)
        
    words_antistem = [words_dict[i]for i in words_stem]
    
    #统计出现次数
    all_counts = dict()
    for size in 1,2,3,4:
        all_counts[size] = FreqDist(ngrams(words_antistem,size))
        
    return all_counts

统计各个目录不同数量词组组合出现的次数

counts = pd.DataFrame()
for ct in [women,men,boy,girl]:
    catelogy = ct.catelogy.unique()
    for i in catelogy:
        count_df = pd.DataFrame()
        keywords = ct.loc[ct['catelogy']==i,'item_title']
        all_counts = process_keywords(keywords,english_stopwords)
        phrase = [j for size in all_counts.keys() for j in all_counts[size]]
        times = [all_counts[size][j] for size in all_counts.keys() for j in all_counts[size]]
        count_df['词组'] = phrase
        count_df['次数'] = times
        count_df['目录'] = i
        counts = pd.concat([counts,count_df],sort = False)
    
counts['词组数'] = counts['词组'].map(lambda x:len(x))
counts['词组'] = counts['词组'].map(sorted)
counts['词组'] = counts['词组'].astype(str)

df = counts.groupby(['目录','词组','词组数'],as_index = False)['次数'].sum().sort_values(by = ['目录','词组数','次数'],ascending = [True,True,False])

结果如下

补充

FreqDist继承自dict,可以像操作字典一样操作FreqDist对象。FreqDist中的键为单词,值为单词的出现总次数。
ngrams可以实现抽取连续2grams,3grams,4grams等。返回的是迭代器


http://www.niftyadmin.cn/n/1376600.html

相关文章

汇编语言第3章 寄存器(内存访问)

*****本章学习***** 3.1 字数据在内存中的存储 (1)字单元,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成 (2)高地址内存单元中存放字型数据的高位字节&#xff…

struts2整合JFreechart 饼图、折线图、柱形图

struts2整合JFreechart 饼图、折线图、柱形图 上效果图: 当然可以将数据导出图片格式存储。具体下的链接里的文件有保存成图片的操作。 因为是strust2整合JFreechart,所以strust2框架一定得搭建好。 1.导入三个包:http://download.csdn.net/detail/x4646…

转化图片格式

import os from PIL import Imageos.chdir(r"D:\jupyter\image_convert") os.getcwd() file os.listdir(r"D:\jupyter\image_convert")for f in file:img Image.open(f)img.load()f f.split(".")[0]img.save(f".jpg")

分布式优化名人堂

刘青山 http://web2.nuist.edu.cn/xky/2013-10/20131022215516.html http://web2.nuist.edu.cn:8080/jszy/Professor.aspx?id1754 杨绍富 http://cse.seu.edu.cn/personalpage/ysf/publications.html?tdsourcetags_pctim_aiomsg 凌青 http://home.ustc.edu.cn/~qingling/home…

用mysql实现类似于oracle dblink的功能

为什么80%的码农都做不了架构师?>>> 用mysql实现类似于oracle dblink的功能 首先看看有没有federated 引擎: mysql> show engines; -----------------------------------------------------------------------------------------------…

核心基础(一)--设置搜索路径和字符串连接方式

设置Python模块的搜索路径有几种方式 设置PYTHONPATH环境变量添加.pth文件(先在txt文件中写入需要添加为永久路径的项目路径,然后更改文件后缀名为.pth,再次查看sys.path会发现路径已添加至环境变量)通过sys.path.append()设置路…

STL 1–迭代器std::begin()和std::end()使用

迭代器是一个行为类似于指针的模板类对象。只需要迭代器iter指向一个有效对象,就可以通过使用*iter解引用的方式来获取一个对象的引用。通常会使用一对迭代器来定义一段元素,可以是任意支持迭代器对象的元素,一段元素是一个通过起始迭代器指向…

C# 实现UPD 协议

2019独角兽企业重金招聘Python工程师标准>>> 本文由ligong528贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 C#实现 UDP 协议 实现 一. 走进 UDP 协议: UDP(UserDatagramProtocol&am…