我刚学了sklearn,所以请原谅我的无知:)…现在我正试图弄清楚TfidfVectorizer是如何工作的,以及如何避免在周期上分裂。
from sklearn.feature_extraction.text import TfidfVectorizer
docs= ("'CSC.labtrunk', 'CSC.datacenter', 'CSC.netbu', 'CSC.asr5k.general', 'CSC.ena', 'CSC.embu'", "'CSC.ena'", "'CSC.embu', 'CSC.security', 'CSC.ena'", "'CSC.embu', 'CSC.datacenter', 'CSC.labtrunk', 'CSC.content-security', 'CSC.ena', 'CSC.embu.dev', 'CSC.spv.custom-prods', 'CSC.voice', 'CSC.policy-mgmt', 'CSC.nuova'", "'CSC.embu', 'CSC.sys', 'CSC.policy-mgmt', 'CSC.content-security', 'CSC.datacenter'", "'CSC.asr5k.general'", "'CSC.sys'", "'CSC.labtrunk'")
vec = TfidfVectorizer()
trfm_data = vec.fit_transform(docs)
print trfm_data
输出示例:
(0, 6) 0.200552591995
(0, 7) 0.200552591995
(0, 8) 0.265074737928
(0, 0) 0.265074737928
(0, 11) 0.316288846342
(0, 4) 0.228737749732
(0, 9) 0.228737749732
(0, 2) 0.757857197424
print vec.inverse_transform(trfm_data)
输出示例:
[u'embu', u'ena', u'general', u'asr5k', u'netbu', u'datacenter',
u'labtrunk', u'csc']
理想情况下,我希望将每个项目视为字符串,例如"'CSC.labtrunk', 'CSC.datacenter', 'CSC.netbu', 'CSC.asr5k.general', 'CSC.ena', 'CSC.embu'"
。
不确定这是否是适当的约定,但我使用字符串列表而不是字符串元组,并得到了所需的输出。
样本数据:data = ["'CSC.labtrunk', 'CSC.datacenter', 'CSC.netbu', 'CSC.asr5k.general', 'CSC.ena', 'CSC.embu'", "'CSC.ena'", "'CSC.embu', 'CSC.security', 'CSC.ena'", "'CSC.embu', 'CSC.datacenter', 'CSC.labtrunk', 'CSC.content-security', 'CSC.ena', 'CSC.embu.dev', 'CSC.spv.custom-prods', 'CSC.voice', 'CSC.policy-mgmt', 'CSC.nuova'", "'CSC.embu', 'CSC.sys', 'CSC.policy-mgmt', 'CSC.content-security', 'CSC.datacenter'", "'CSC.asr5k.general'", "'CSC.sys'", "'CSC.labtrunk'"]
vec = TfidfVectorizer(tokenizer=lambda i: i, lowercase=False)
trfm_data = vec.fit_transform(data)
data = trfm_data
trfm_data data
示例输出:
[array(['CSC.embu', 'CSC.ena', 'CSC.asr5k.general', 'CSC.netbu',
'CSC.datacenter', 'CSC.labtrunk'],
dtype='|S20'), array(['CSC.ena'],
dtype='|S20'), array(['CSC.security', 'CSC.embu', 'CSC.ena']