Avi*_*vic 1 python nlp scikit-learn
我想做 n-grams 方法但是一个字母一个字母
正常的 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
Run Code Online (Sandbox Code Playgroud)
我想这样做,但要逐字逐句:
word : Angela
result:
a, an, n , ng , g , ge, e ,el, l , la ,a
Run Code Online (Sandbox Code Playgroud)
这是我使用 的代码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())
Run Code Online (Sandbox Code Playgroud)
有一个'analyzer'
参数可以做你想要的。
根据文档:-
分析器:字符串、{'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')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1522 次 |
最近记录: |