【问题标题】:N-grams for letter in sklearnsklearn中字母的N-gram
【发布时间】:2019-04-01 16:46:21
【问题描述】:

我想做 n-gram 方法,但是一个字母一个字母

普通 N-gram:

sentence : He want to watch football match

result:
he, he want, want, want to , to , to watch , watch , watch football , football, football match, match

我想这样做,但一个字母一个字母:

word : Angela 

result:
a, an, n , ng , g , ge, e ,el, l , la ,a

这是我使用 Sklearn 的代码,但它仍然是逐字逐句而不是逐字母:

from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer(ngram_range=(1, 100),token_pattern = r"(?u)\b\w+\b")

corpus = ['Angel','Angelica','John','Johnson']

X = vectorizer.fit_transform(corpus)
analyze = vectorizer.build_analyzer()
print(vectorizer.get_feature_names())
print(vectorizer.transform(['Angela']).toarray())

【问题讨论】:

    标签: python scikit-learn nlp


    【解决方案1】:

    有一个 'analyzer' 参数可以满足您的需求。

    根据the documentation:-

    分析器:字符串、{'word'、'char'、'char_wb'} 或可调用

    特征是否应该由单词或字符 n-gram 组成。选项‘char_wb’仅从单词边界内的文本创建字符 n-gram; 单词边缘的 n-gram 用空格填充。

    如果传递了一个可调用对象,它将用于提取特征序列 来自未处理的原始输入。

    默认设置为word,可以更改。

    只要做:

    vectorizer = CountVectorizer(ngram_range=(1, 100),
                                 token_pattern = r"(?u)\b\w+\b", 
                                 analyzer='char')
    

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 1970-01-01
      • 2016-04-07
      • 2020-02-11
      • 2021-01-30
      • 2018-04-05
      • 2019-01-08
      • 2018-08-12
      • 1970-01-01
      相关资源
      最近更新 更多