因此,在我的数据帧中,我有一列“Actors”,其中包含演员的多个“first_name姓氏”。例如:“丹尼斯·克里斯托弗,丹尼斯·奎德,丹尼尔·斯特恩”作为类型“类别”当我使用它时,会将上述组稀疏为6个单词。我希望该函数不考虑名称之间的''(空格),而只考虑'',因此在前面的示例中,它将稀疏为3个单词。CountVectorizer().fit_transform(df['Actors'])vectorizer = CountVectorizer()
Actors_f = vectorizer.fit_transform(df.loc[df['Actors'].notna(), 'Actors'])有没有办法做到这一点?
4 回答

FFIVE
TA贡献1797条经验 获得超6个赞
与本问题类似:如何将带小数或逗号的数字视为计数中的一个单词计算器,您必须更改用于标记输入的正则表达式。
如文档所述,默认正则表达式为:
token_pattern='(?u)\b\w\w+\b'
哪些匹配:
(/u)
- 统一码字符
\b
- 字边界(例如空格)
\w
- 一个词
\w+
- 连续词直到...
\b
- 另一个单词边界(例如字符串的末尾)
你需要的是这个:
token_pattern='(?u)[a-zA-Z][a-z ]+'
特别是,空格字符包含在令牌中,这使得捕获名称+姓氏成为一个标记。
检查正则表达式文档以了解正则表达式的含义。

qq_遁去的一_1
TA贡献1725条经验 获得超8个赞
我设法做到了这一点
bigram_vectorizer = CountVectorizer(ngram_range=(2, 2), min_df=1) bigram_vectorizer.fit_transform(df['Actors'])

白衣非少年
TA贡献1155条经验 获得超0个赞
可能是一种更具可读性和直观性的方法
import re
re_exp = r"\,"
vectorizer = CountVectorizer(tokenizer=lambda text: re.split(re_exp,text))
“科学学习”文档说
分词器:可调用,默认=无 覆盖字符串分词化步骤,同时保留预处理和 n-gram 生成步骤。仅当分析器 == “单词”时才适用。
添加回答
举报
0/150
提交
取消