Как удалить слова длиной менее 3 символов? - PullRequest
0 голосов
/ 25 мая 2019

Я использую 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

По сути, я хочу удалить функции, длина которых менее 3 символов в моем features_subject.

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Следующее понимание списка должно сработать:

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
0 голосов
/ 25 мая 2019

Попробуйте это

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

# Sample output
['aiding', 'syria', 'latest', 'exchange']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...