繁体   English   中英

如何删除少于3个字符的单词?

[英]How can I remove words with less than 3 characters?

我在文本数据上使用tf-idf ,但是无法删除少于3个字符的单词。 我使用stop-words来忽略一些单词,但是如何指定长度以限制少于3个字符的单词呢?

stopwords = ENGLISH_STOP_WORDS.union(['docx','45','ect', 'hou', 'com', 'recipient' , '030311' , '2011' , 'hrc' , 'qaddafi'])

vectsubject = TfidfVectorizer(analyzer='word', stop_words=stopwords, max_df=0.50, min_df=2)
X_SUBJECT = vectsubject.fit_transform(datasetemail.MetadataSubject)
features_subject = vectsubject.get_feature_names()

# Let's print the top 5 terms in body
dfbodyfeatures = gettop5(features_subject)
print(dfbodyfeatures)

我的结果是具有少于3个字符的功能。

0      aiding
1       syria
2      latest
3         sid
4    exchange

我想删除“ sid”之类的词并在结果中包括下一个功能,因此输出可能要包括“帮助”功能,这是下一个相关功能

0      aiding
1       syria
2      latest
3      exchange
4      helping

基本上,我要删除features_subject中少于3个字符的features_subject

下面的列表理解应该可以解决问题:

features_subject = [f for f in vectsubject.get_feature_names() if len(f) > 3]

现在,输出应排除长度小于3的任何单词:

dfbodyfeatures = gettop5(features_subject)
print(dfbodyfeatures)

0      aiding
1       syria
2      latest
3      exchange
4      helping

尝试这个

words = ['aiding', 'syria', 'latest', 'sid', 'exchange']
result_words = [x for x in words if len(x) > 3]

# Sample output
['aiding', 'syria', 'latest', 'exchange']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM