Vectorize字符串包括标点符号和特殊字符

时间:2017-03-29 12:42:15

标签: python regex pandas scikit-learn vectorization

我需要对不同的标记化字符串进行矢量化,包括标点符号和特殊字符,如?,!,#,/,➧,❤,➽或✓ - 我正在使用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'将包含这些标记

1 个答案:

答案 0 :(得分:0)

您可能会发现 @Venkatachalam 在此 stackoverflow 问题中提供的已接受答案很有帮助。 Sk Learn CountVectorizer: keeping emojis as words

通过使用 token_pattern=r'[^\s+]',我们将 token_pattern 设置为除一个或多个空格之外的任何字符。

因此,以下项目将被视为令牌:

  • 标点符号序列,如 !#$ 甚至单个标点符号,如 *.

  • 特殊字符,如表情符号?。

  • 单字符字母,例如aC