猿问

“计数矢量化器()”在空间上而不是在逗号上拆分

因此,在我的数据帧中,我有一列“Actors”,其中包含演员的多个“first_name姓氏”。

例如:“丹尼斯·克里斯托弗,丹尼斯·奎德,丹尼尔·斯特恩”作为类型“类别”

当我使用它时,会将上述组稀疏为6个单词。我希望该函数不考虑名称之间的''(空格),而只考虑'',因此在前面的示例中,它将稀疏为3个单词。CountVectorizer().fit_transform(df['Actors'])

vectorizer = CountVectorizer()
Actors_f = vectorizer.fit_transform(df.loc[df['Actors'].notna(), 'Actors'])

有没有办法做到这一点?


慕雪6442864
浏览 140回答 4
4回答

FFIVE

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

qq_遁去的一_1

我设法做到了这一点bigram_vectorizer = CountVectorizer(ngram_range=(2, 2), min_df=1) bigram_vectorizer.fit_transform(df['Actors'])

白衣非少年

可能是一种更具可读性和直观性的方法import rere_exp = r"\,"vectorizer = CountVectorizer(tokenizer=lambda text: re.split(re_exp,text))“科学学习”文档说分词器:可调用,默认=无 覆盖字符串分词化步骤,同时保留预处理和 n-gram 生成步骤。仅当分析器 == “单词”时才适用。

qq_花开花谢_0

使用下面的分词器在你的情况下按逗号拆分:矢量化器 = 计数向量器(分词器 = lambda x: x.split(','))
随时随地看视频慕课网APP

相关分类

Java
我要回答