Удаление слова в столбце на основе частот - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть проект НЛП, в котором я хотел бы удалить слова, которые встречаются в ключевых словах только один раз. То есть для каждой строки у меня есть список ключевых слов и их частоты.

Я бы хотел что-то вроде

if the frequency for the word in the whole column ['keywords'] ==1 then replace by "". 

Я не могу проверить слово за словом. Поэтому моей идеей было создание списка со всеми словами и удаление дубликатов, затем для каждого слова в этом списке count.sum и затем удаление. Но я понятия не имею, как это сделать. Любые идеи? Спасибо!

Вот как выглядят мои данные:

sample.head (4)

    ID  keywords                                            age sex
0   1   fibre:16;quoi:1;dangers:1;combien:1;hightech:1...   62  F
1   2   restaurant:1;marrakech.shtml:1  35  M
2   3   payer:1;faq:1;taxe:1;habitation:1;macron:1;qui...   45  F
3   4   rigaud:3;laurent:3;photo:11;profile:8;photopro...   46  F

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Чтобы добавить к тому, что @jpl упомянул в scikit-learn's CountVectorizer, существует опция min_df, которая делает именно то, что вы хотите, при условии, что вы можете получить свои данные в правильном формате. Вот пример:

from sklearn.feature_extraction.text import CountVectorizer
# assuming you want the token to appear in >= 2 documents
vectorizer = CountVectorizer(min_df=2)
documents = ['hello there', 'hello']
X = vectorizer.fit_transform(documents)

Это дает вам:

# Notice the dimensions of our array – 2 documents by 1 token
>>> X.shape
(2, 1)
# Here is a count of how many times the tokens meeting the inclusion
# criteria are observed in each document (as you see, "hello" is seen once
# in each document
>>> X.toarray()
array([[1],
       [1]])
# this is the entire vocabulary our vectorizer knows – see how "there" is excluded?
>>> vectorizer.vocabulary_
{'hello': 0}
0 голосов
/ 13 апреля 2020

Ваше представление делает это трудным. Вы должны построить фрейм данных, где каждый столбец является словом; тогда вы можете легко использовать pandas операции, такие как сумма, чтобы делать все, что вы хотите.

Однако это приведет к очень разреженному фрейму данных, который никогда не годится.

Многие библиотеки, например Scikit Learn's CountVectorizer позволяет эффективно делать то, что вы хотите.

...