Как я могу создать функцию, которая будет выполнять анализ НЛП для каждого уровня категориальной переменной в Python? - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть набор данных, в котором есть категориальные переменные, называемые «Назначение» и «Описание», в качестве текстовой или строковой переменной.Я должен выполнить анализ НЛП, такой как наиболее распространенные слова, биграммы, триграммы и т. Д. В каждой категории «Цель».Я могу сделать это вручную для каждой категории в «Цель», но это отнимает много времени.Я хочу создать функцию, которая будет выполнять каждый анализ и возвращать мне мировое облако этого конкретного уровня в переменной «Цель».Как мне это сделать?Я новичок в создании такой совершенно новой полностью автоматизированной функции ..!

Ниже приведен мой код для одной переменной -

"
print(dataset['ActivityPurposeName'].value_counts())
PMET = dataset[dataset.ActivityPurposeName=='PME-Troubleshooting']

#%%
# PME- Troubleshooting

all_wordsPME = []

for message in PMET['processed']:
    wordsPME = word_tokenize(message)
    for w in wordsPME:
        all_wordsPME.append(w)

all_wordsPME = nltk.FreqDist(all_wordsPME)
#%%

print('Number of words: {}'.format(len(all_wordsPME)))
print('Most common words: {}'.format(all_wordsPME.most_common(150)))

#%%
# Bi-grams

from nltk.collocations import BigramCollocationFinder
from nltk.metrics import BigramAssocMeasures

finder2 = BigramCollocationFinder.from_words(all_words_text, window_size = 2)       # all_words_text = all_words (Tokenized words)
                                                                                    # all_words = nltk.FreqDist(all_words)
bigram_measures = nltk.collocations.BigramAssocMeasures()

#for k,v in finder2.ngram_fd.items():
#    print(k,v)

bigram = list(finder2.ngram_fd.items())
bigram.sort(key=lambda item: item[-1], reverse=True)
bigran[:10]
#%%
# Tri-grams

from nltk.collocations import TrigramCollocationFinder
from nltk.metrics import TrigramAssocMeasures

finder3 = TrigramCollocationFinder.from_words(all_words_text, window_size = 3)
trigram_measures = nltk.collocations.TrigramAssocMeasures()

trigram = list(finder3.ngram_fd.items())
trigram.sort(key=lambda item: item[-1], reverse=True)

trigram[:10]
#%%
from nltk import word_tokenize, pos_tag
print(pos_tag(all_words_text))

[Also the Wordcloud]
"
...