В настоящее время я столкнулся с проблемой, когда при преобразовании списка ключевых слов в словарь я не могу умножить частоту в исходном наборе данных на частоту при преобразовании списка в словарь.
rowid Частота ключевых слов
1 дерматология 1151
2 психиатрия 1068
3 обгын 1017
4 внутренняя медицина 883
5 психическое здоровье 865
6 оптометрия 763
7 педиатр 678
8 педиатрия 622
Я пытаюсь объединить некоторые ключевые слова для поиска с использованием LDA иtfidfmodel. В моем наборе данных у меня есть список ключевых слов и их частота. Я пытаюсь кластеризовать темы на основе этих ключевых слов, используя частоту #.
data_text = data[['Keyword']]
data_text['index']=data_text.index
documents = data_text
#Pre-Processing steps lemmatize and stemming
def lemmatize_stemming(text):
return stemmer.stem(WordNetLemmatizer().lemmatize(text,pos='v'))
#def lemmatize_stemming(text):
# return stemmer.stem(text)
def preprocess(text):
result=[]
for token in gensim.utils.simple_preprocess(text):
if token not in gensim.parsing.preprocessing.STOPWORDS and len(token)>3:
result.append(lemmatize_stemming(token))
return result
doc_sample = documents[documents['index']==4310].values[0][0]
print('original document:')
words = []
for word in doc_sample.split(' '):
words.append(word)
print(words)
print('\n\n tokenize and lemmatize document: ')
print(preprocess(doc_sample))
documents['Keyword']=documents['Keyword'].astype(str)
processed_docs = documents['Keyword'].map(preprocess)
processed_docs[:]
dictionary = gensim.corpora.Dictionary(processed_docs)
count=0
for k,v in dictionary.iteritems():
print(k,v)
count +=1
if count > 10:
break
[[(dictionary[id], freq*) for id, freq in cp] for cp in bow_corpus[:1]]
print(bow_corpus)
#create dic reporting how many words and how many times those words appear
bow_corpus = [dictionary.doc2bow(doc) for doc in processed_docs]
bow_corpus
Не знаю, как лучше всего подготовить эти ключевые слова для лучшей кластеризации и поиска тем. Пожалуйста, сообщите.