我有字符串列表。如果任何字符串包含'#'字符,那麼我想提取字符串的第一部分,並只從這部分字符串中獲取單詞記號的頻率計數。即 如果字符串是「在計算器的第一個問題#」 預期令牌是「第一」,「問題」Scikit學習 - 使用CountVectorizer從字符串分隔符中提取字詞標記
如果字符串不包含「#」然後返回整個字符串的令牌。
要計算術語文檔矩陣,我正在使用scikit的CountVectorizer
。
下面找到我的代碼:
class MyTokenizer(object):
def __call__(self,s):
if(s.find('#')==-1):
return s
else:
return s.split('#')[0]
def FindKmeans():
text = ["first ques # on stackoverflow", "please help"]
vec = CountVectorizer(tokenizer=MyTokenizer(), analyzer = 'word')
pos_vector = vec.fit_transform(text).toarray()
print(vec.get_feature_names())`
output : [u' ', u'a', u'e', u'f', u'h', u'i', u'l', u'p', u'q', u'r', u's', u't', u'u']
Expected Output : [u'first', u'ques', u'please', u'help']
如果在整個文檔中包含'#'或者只是爲了顯示那些具有'#'的單詞,您是否想要計算'第一''ques'的出現? –
我想計算子字符串的發生,如果該行包含#以及從整個字符串的發生,如果它包含# –