我需要对不同的标记化字符串进行矢量化,包括标点符号和特殊字符,如?,!,#,/,➧,❤,➽或✓ - 我正在使用pandas和scikit-learn来完成该任务,但仅限于CountVectorize函数矢量化单词并忽略其他字符。我找到this但我没有其他字符的列表,需要所有这些字符。这是我执行该任务的代码:
def vectorize (dataframe,column_supplement):
v = CountVectorizer(analyzer = "word", encoding='utf-8', max_features = 5000)
x = v.fit_transform(dataframe['string_tokenized'])
df_result = pd.DataFrame(x.todense(), columns=v.get_feature_names())
instances = df_result.values.tolist()
header = list(df_result)
for i in range(len(header)):
header[i] = column_supplement+header[i]
df = pd.DataFrame.from_records(instances, columns=header)
return df
感谢您的帮助和想法!
PS token_pattern(默认u'(?u)\ b \ w \ w + \ b')标识标记的正则表达式 - 默认单词由单个字符组成(例如'a','2')将被忽略,将token_pattern设置为'(?u)\ b \ w + \ b'将包含这些标记
答案 0 :(得分:0)
您可能会发现 @Venkatachalam 在此 stackoverflow 问题中提供的已接受答案很有帮助。 Sk Learn CountVectorizer: keeping emojis as words
通过使用 token_pattern=r'[^\s+]'
,我们将 token_pattern
设置为除一个或多个空格之外的任何字符。
因此,以下项目将被视为令牌:
标点符号序列,如 !#$
甚至单个标点符号,如 *
或 .
特殊字符,如表情符号?。
单字符字母,例如a
、C