python做词频分析时的停止词,长度,去除标点符号处理

# coding=utf-8
import string

import collections

import yake

def word_count(list):
    dic = collections.Counter(list)
    # for i in dic:
    #     info = []
    #     info.append(i)
    #     info.append(dic[i])
    #     all_info.append(info)
    return dic


def phrase_extract(text):
    text = text.lower()
    custom_kw_extractor = yake.KeywordExtractor(top=100, lan="en")
    keywords = custom_kw_extractor.extract_keywords(text)
    phrase_list = []
    for keyword, score in keywords:
        if len(keyword.split(' ')) > 1:
            phrase_list.append(keyword.lower())
    phrases_list = []
    for phrase in phrase_list:
        for i in range(0, len(text.split(phrase)) - 1):
            phrases_list.append(phrase)
    return phrases_list


def words_count(text):
    phrases_list = phrase_extract(text)
    # word_tokens = nltk.tokenize.word_tokenize(text.strip())
    word_list = []
    for i in text.split(' '):
        word_list.append(i)
    table = str.maketrans('', '', string.punctuation)
    tokens = [w.translate(table) for w in word_list]
    tokens = [word for word in tokens if word.isalpha()]
    # stop_words = set(stopwords.words('english'))
    tokens = [w for w in tokens if not w in stop_words]
    tokens = [word for word in tokens if len(word) > 1]
    tokens = tokens + phrases_list
    return word_count(tokens)

对输入的文本进行分析处理,返回包含单词和短语出现频率的字典。下面是代码的详细解释:

  1. phrase_extract(text)函数:该函数用yake模块提取出原始文本中的短语,并以小写字母形式返回列表。

  2. 将原始文本通过split()方法划分为单词列表后,使用str.maketrans()方法去掉标点符号、使用isalpha()方法过滤出只含有字母的单词列表。

  3. 接着,使用nltk库中stopwords模块获取英文停用词表,过滤掉其中在停用词表中出现的单词,并排除长度为1的单词。

  4. 最后,将步骤1中得到的短语列表与不在停用词中的单词列表拼接成新的列表,并交给word_count函数进行计数,返回一个包含单词和短语出现频率的字典。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值