我Counter在列表上用来计算这个变量:
final = Counter(event_container)
Run Code Online (Sandbox Code Playgroud)
打印最终给出:
Counter({'fb_view_listing': 76, 'fb_homescreen': 63, 'rt_view_listing': 50, 'rt_home_start_app': 46, 'fb_view_wishlist': 39, 'fb_view_product': 37, 'fb_search': 29, 'rt_view_product': 23, 'fb_view_cart': 22, 'rt_search': 12, 'rt_view_cart': 12, 'add_to_cart': 2, 'create_campaign': 1, 'fb_connect': 1, 'sale': 1, 'guest_sale': 1, 'remove_from_cart': 1, 'rt_transaction_confirmation': 1, 'login': 1})
Run Code Online (Sandbox Code Playgroud)
现在我想转换final成熊猫DataFrame,但是当我做的时候:
final_df = pd.DataFrame(final)
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误.
我猜最终不是一个合适的字典,所以如何转换final为字典?或者它是另一种转换final为DataFrame?的方式?
我不确定我是否已正确理解FreqDist函数如何在Python上运行.当我按照教程进行操作时,我会相信以下代码构造给定单词列表的频率分布并计算最常用的x个单词.(在下面的示例中,将语料库设为NLTK语料库,将文件作为该语料库中文件的文件名)
words = corpus.words('file.txt')
fd_words = nltk.FreqDist(word.lower() for word in words)
fd_words.items()[:x]
Run Code Online (Sandbox Code Playgroud)
但是,当我在Python上执行以下命令时,它似乎暗示:
>>> from nltk import *
>>> fdist = FreqDist(['hi','my','name','is','my','name'])
>>> fdist
FreqDist({'my': 2, 'name':2, 'is':1, 'hi':1}
>>> fdist.items()
[('is',1),('hi',1),('my',2),('name',2)]
>>> fdist.items[:2]
[('is',1),('hi',1)]
Run Code Online (Sandbox Code Playgroud)
fdist.items()[:x]方法实际上是返回x个最不常见的单词?
有人能告诉我,如果我做错了什么或错误在于我正在遵循的教程吗?
我编写了一个使用 NLTK 从文本输入计算二元/三元频率的代码。我在这里面临的问题是,由于输出是以Python列表的形式获得的,所以我的输出包含列表特定字符,即(“()”,“'”,“,”)。我计划将其导出到 csv 文件中,因此我想在代码级别本身删除这些特殊字符。我怎样才能进行编辑。
输入代码:
import nltk
from nltk import word_tokenize, pos_tag
from nltk.collocations import *
from itertools import *
from nltk.util import ngrams
from nltk.corpus import stopwords
corpus = '''The pure amnesia of her face,
newborn. I looked so far into her that, for a while, looked so far into her that, for a while looked so far into her that, for a while looked so far into her that, for a while the visual
held no memory. …Run Code Online (Sandbox Code Playgroud) 我想计数的各种频率ngrams使用ngram和freqDist功能nltk。由于ngram函数输出是一个generator对象,我想在计算频率之前合并每个 ngram 的输出。但是,我遇到了合并各种生成器对象的问题。
我试过itertools.chain,它创建了一个itertools对象,而不是合并生成器。我终于确定了permutations,但之后解析对象似乎是多余的。
到目前为止的工作代码是:
import nltk
from nltk import word_tokenize, pos_tag
from nltk.collocations import *
from itertools import *
from nltk.util import ngrams
import re
corpus = 'testing sentences to see if if if this works'
token = word_tokenize(corpus)
unigrams = ngrams(token,1)
bigrams = ngrams(token,2)
trigrams = ngrams(token,3)
perms = list(permutations([unigrams,bigrams,trigrams]))
fdist = nltk.FreqDist(perms)
for x,y in fdist.items():
for k in …Run Code Online (Sandbox Code Playgroud) 我正在使用 NLTK 和模块 freqDist
import nltk
from nltk.corpus import gutenberg
print(gutenberg.fileids())
from nltk import FreqDist
fd = FreqDist()
for word in gutenberg.words('austen-persuasion.txt'):
fd[word] += 1
newfd = sorted(fd, key=fd.get, reverse=True)[:10]
Run Code Online (Sandbox Code Playgroud)
所以我正在使用 NLTK,并且有一个关于排序部分的问题。当我运行这样的代码时,它会正确对 freqDist 对象进行排序。但是,当我使用 get() 而不是 get 运行它时,我遇到了错误
Traceback (most recent call last):
File "C:\Python34\NLP\NLP.py", line 21, in <module>
newfd = sorted(fd, key=fd.get(), reverse=True)[:10]
TypeError: get expected at least 1 arguments, got 0
Run Code Online (Sandbox Code Playgroud)
为什么 get 是对的而 get() 是错的。我的印象是 get() 应该是正确的,但我想事实并非如此。
nltk ×4
python ×4
counter ×1
dataframe ×1
dictionary ×1
generator ×1
nlp ×1
pandas ×1
python-2.7 ×1
sorting ×1