Python 分配;";到检测到的总字数
对于当前的项目,我计划计算给定数据帧中的总字数。下面的代码基于SciKit学习,并为识别的每个单词指定频率,但需要定义所考虑单词的总量Python 分配;";到检测到的总字数,python,pandas,dataframe,nlp,Python,Pandas,Dataframe,Nlp,对于当前的项目,我计划计算给定数据帧中的总字数。下面的代码基于SciKit学习,并为识别的每个单词指定频率,但需要定义所考虑单词的总量n 不过,我希望计算数据帧中的总字数。有没有办法将n设置为一个无穷大的数字,以覆盖数据框中的所有相关字,然后计算这些相关字的总和(即不显示经理:10,“办公室”:5但总字数:15) 在给定的示例中,我使用10000作为要考虑的字数(通过行common\u words1=get\u top\u n\u bigram\u Group1(df[I],100000)),但
n
不过,我希望计算数据帧中的总字数。有没有办法将n
设置为一个无穷大的数字,以覆盖数据框中的所有相关字,然后计算这些相关字的总和(即不显示经理:10,“办公室”:5
但总字数:15
)
在给定的示例中,我使用10000
作为要考虑的字数(通过行common\u words1=get\u top\u n\u bigram\u Group1(df[I],100000)
),但我想知道是否有更灵活/自动化的方法
相关代码部分如下所示:
# Word frequency analysis
def get_top_n_bigram_Group1(corpus, n=None):
vec = CountVectorizer(ngram_range=(1, 1), stop_words='english').fit(corpus)
bag_of_words = vec.transform(corpus)
sum_words = bag_of_words.sum(axis=0)
words_freq = [(word, sum_words[0, idx]) for word, idx in vec.vocabulary_.items()]
words_freq =sorted(words_freq, key = lambda x: x[1], reverse=True)
return words_freq[:n]
for i in ['txt_pro','txt_con','txt_adviceMgmt','txt_main']:
# Loop over the common words inside the JSON object
common_words1= get_top_n_bigram_Group1(df[i], 100000)
common_words1.to_csv('out1.csv')
如果我正确理解您的目的,下面的返回语句应该可以完成这项工作。您根本不需要使用
n
换行
return words_freq[:n]
对此
return {'total_words': sum(frequency for word, frequency in words_freq)}
相关词语是什么?是否要包括
单词\u freq
中的所有单词。如果是这样,那就不要用n
作为阈值。谢谢您的输入。相关单词是文件中包含的所有单词words\u freq
显示最频繁的单词,直到达到n
(即,如果n
=100,则显示最频繁的100个单词)。好主意-我尝试过,但它将以空数据框作为输出…好的,您可以在问题中详细说明您所需的输出是什么吗?你想要全部的单词。数据帧输出应该是什么?您的函数不返回数据帧。理想情况下,我希望输出“总字数”:23124,即文本中的总字数指示。如果不清楚,我道歉