【问题标题】:Vectorize string including punctuation and special characters向量化字符串,包括标点符号和特殊字符
【发布时间】:2017-08-22 23:03:27
【问题描述】:

我需要向量化不同的标记化字符串集,包括标点符号和特殊字符,如 ?,!,#,/,➧,❤,➽ 或 ✓ - 我正在使用 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 (default u'(?u)\b\w\w+\b') 正则表达式识别标记——默认情况下,由单个字符组成的单词(例如,'a'、'2')被忽略,将 token_pattern 设置为 '(?u)\b\w+\b' 将包含这些标记

【问题讨论】:

    标签: python regex pandas scikit-learn vectorization


    【解决方案1】:

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

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

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

    • !#$这样的标点序列,甚至像*.这样的单个标点符号

    • 表情符号等特殊字符?。

    • 单字符字母,例如a,C

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多