我需要计算训练数据中每个令牌的频率,列出频率至少等于N的令牌列表。 为了将我的数据集拆分为训练和测试,我做了如下操作:
X = vectorizer.fit_transform(df['Text'].replace(np.NaN, ""))
y=df['Label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.30, stratify=y)
例如,如果Text
列包含句子
Text
Show some code
Describe what you've tried
Have a non-programming question?
More helpful links
要提取所有代币,我执行了以下操作:
import pandas as pd
from nltk.tokenize import word_tokenize
X_train['tokenized_text'] = X_train.Text.apply(lambda row: word_tokenize(row))
这为我提供了本地令牌,而不是全局令牌。我应该拥有all列表并对所有行进行计数,以便生成一个频率至少等于N
的令牌列表。
我的困难在于通过所有列计算代币的频率
你能告诉我怎么数这些代币吗
更新:
以下代码可以正常工作:
df.Text.str.split(expand=True).stack().value_counts()
但是,我不知道如何提取所有具有count>;例如,15
假设你说下面的方法行得通
那你就可以了
获取至少有
15
个计数的令牌但是,第一行没有给出与
nltk.word_tokenize
相同的标记化。如果需要后者的输出,可以将第一行替换为:从您的示例数据中可以得出以下信息:
您可以使用计数器集合执行所需操作,然后仅使用根据限制筛选的单词创建辅助列表。以限制2为例,检查以下代码:
相关问题 更多 >
编程相关推荐