logo

[텍스트 분석] NMF

전처리는 [토픽 모델링을 위한 전처리](/course/text-mining/토픽 모델링을 위한 전처리)를 참조

 

SVD로 스크리 플롯

from sklearn.decomposition import TruncatedSVD
svd = TruncatedSVD(n_components=100, random_state=1234)
svd.fit(dtm)

스크리 플롯

import matplotlib.pyplot as plt
plt.plot(svd.explained_variance_)
[<matplotlib.lines.Line2D at 0x182beae9630>]
 

NMF

from sklearn.decomposition import NMF
NUM_TOPICS = 15
nmf = NMF(n_components=NUM_TOPICS, max_iter=500)
doc_emb = nmf.fit_transform(dtm)
 

단어 임베딩

word_emb = nmf.components_.T

words = cv.get_feature_names_out().tolist()
i = words.index('모발')

plt.plot(word_emb[i])
[<matplotlib.lines.Line2D at 0x182c00e8a30>]

코사인 유사도

from sklearn.metrics.pairwise import cosine_similarity
sim = cosine_similarity(word_emb)


import numpy as np
s = np.argsort(sim[i])
related = s[-2:-12:-1]
for j in related:
    print(words[j])
손상
염색
염모제
최소
윤기
트리트먼트
자극
산
피
감소

 

시각화

다차원 척도법

indices = []
target = ['모발', '손상', '두피', '모공',
          '용기', '내용물']
for w in target:
    i = words.index(w)
    indices.append(i)
    print(w, i)

dist = 1 - sim[indices, ][:, indices]

from sklearn.manifold import MDS
mds = MDS(dissimilarity='precomputed', random_state=1234)
pos = mds.fit_transform(dist)
모발 80
손상 159
두피 62
모공 78
용기 206
내용물 47

C:\Users\eupho\anaconda3\lib\site-packages\sklearn\manifold\_mds.py:299: FutureWarning: The default value of `normalized_stress` will change to `'auto'` in version 1.4. To suppress this warning, manually set the value of `normalized_stress`.
  warnings.warn(

한글 글꼴 설정

import matplotlib
matplotlib.rc('font', family='Malgun Gothic')
matplotlib.rc('axes', unicode_minus=False)  # 맑은 고딕에는 유니코드 마이너스 글꼴이 없음

plot에서 글자가 겹치지 않도록 조정해주는 adjustText

!pip install adjusttext
from adjustText import adjust_text
plt.plot(pos[:, 0], pos[:, 1], '.')
texts = [plt.text(pos[i, 0], pos[i, 1], w) for i, w in enumerate(target)]
adjust_text(texts)
4
 

토픽별 관련 단어 보기

for t in range(NUM_TOPICS):
    print(t)
    topic_words_idx = np.argsort(word_emb[:, t])

    for j in topic_words_idx[-1:-11:-1]:
        print(words[j])
0
샴푸
통
발명
부분

...
 

문서별 토픽 보기

0번 문서

doc_id = 0
df.iloc[doc_id]
status                                                     등록
ko_title    개운죽 잎 및 줄기 추출물을 함유하는 컨디셔닝 샴푸 조성물 및 이를 이용한 컨디셔닝...
en_title    Conditioning shampoo composition containing le...
abstract    본 발명은 개운죽 잎 및 줄기 추출물을 함유하여 모발의 윤기와 부드러움의 지속력을 ...
Name: 0, dtype: object

0번 문서 토픽 보기

plt.plot(doc_emb[doc_id])
[<matplotlib.lines.Line2D at 0x182c0000e50>]

0번 문서에서 가장 강한 토픽

topic_id = np.argmax(doc_emb[doc_id])
topic_id
7

해당 토픽의 문서 보기

topic_docs_idx = np.argsort(doc_emb[:,topic_id])[-1:-11:-1]
df.iloc[topic_docs_idx]
statusko_titleen_titleabstract
96등록어성초 쿨링 스피큘 샴푸 조성물Houttuynia cordata Cooling Spicule Shampoo Com...본 발명은 카르본산염형의 아니온성 계면활성제 5 내지 10 중량%, 양성 계면활성제...
288등록황칠나무 발효추출물을 함유한 모발용 화장료 조성물Hair cosmetic composition containing an extrac...본 발명은 모발용 화장료 조성물에 관련되며, 그 조성물에 있어서 (A) 황칠나무 발...
133등록천연 추출물이 함유된 기능성 샴푸 조성물 제조방법Hair shampoo composition including natural ext...본 발명은 집중 한방추출물을 복합적으로 적용하여 두피와 모발의 건강을 유지함은 물론...
1공개탈모 케어 헤어 샴푸 조성물A SHAMPOO COMPOSITION FOR CARING HAIR LOSS본 발명은 탈모 케어 헤어 샴푸 조성물에 관한 것으로, 보다 상세하게는 소리쟁이 추...
25등록발효 홍삼을 유효성분으로 함유하는 발모촉진용 두피 케어 샴푸 조성물 제조 방법 및 ...The manufacturing method of shampoo compositio...본 발명은 소리쟁이를 함유한 지루성두피염 및 탈모완화용 샴푸 제조방법에 관한 것으로...
107등록황련추출물, 박하추출물 및 사해미네랄을 함유하는 비듬방지용 샴푸 조성물The Dandruff Preventing Hair Cleaner Compositi...본 발명은 자생 식물 추출물과 천연 한약재 추출물을 주요 유효 성분으로 하여 비듬을...
111등록탈모방지 및 발모 촉진용 샴푸A shampoo for promoting a growith of a hair an...본 발명은 자생 식물 추출물과 천연 한약재 추출물을 주요 유효 성분으로 하여 비듬을...
278등록손상모 재생 및 모발 보호 기능이 우수한 헤어 케어 트리트먼트용 조성물Composition for hair care treatment본 발명은 헤어 케어 트리트먼트용 용액 자체로 사용되거나, 샴푸, 염색제, 모발 케...
161공개천연 산화질소가 함유된 탈모방지 및 발모촉진용 샴푸Shampoo Composition for Promoting Restoring Ha...본 발명은 홍삼추출물을 포함한 애완동물용 샴푸의 조성물을 이용하여 애완동물의 피부와...
385등록허브추출물 및 영양캡슐을 포함하는 두피 및 모발의 보호 및 세정 조성물Scalp and hair protecting and cleansing compos...본 발명은 허브추출물 및 영양캡슐을 포함하는 두피 및 모발의 보호 및 세정 조성물에...

토픽 패턴이 가장 비슷한 문서 찾기

sims = cosine_similarity(doc_emb[[doc_id]], doc_emb).flatten()
sim_idx = np.argsort(sims)[-1:-11:-1]
df.iloc[sim_idx]
statusko_titleen_titleabstract
0등록개운죽 잎 및 줄기 추출물을 함유하는 컨디셔닝 샴푸 조성물 및 이를 이용한 컨디셔닝...Conditioning shampoo composition containing le...본 발명은 개운죽 잎 및 줄기 추출물을 함유하여 모발의 윤기와 부드러움의 지속력을 ...
135등록컨디셔닝 샴푸 조성물CONDITIONING SAMPOO COMPOSITION본 발명은 모발을 청결하고 건강하게 관리할 수 있음은 물론, 모발 주변의 피부에 발...
300등록홍삼 추출물 함유 모발용 조성물 및 그 제조방법Hair Composition Containing Red Ginseng Extrac...본 발명은 유효성분으로, 홍삼 추출물; 및 상백피 추출물 및 황금 추출물로 구성된 ...
224등록막걸리 발효물을 포함하는 샴푸 조성물 및 이의 제조방법SHAMPOO COMPOSITION COMPRISING MAKGEOLLI FERME...본 명세서에는 막걸리 발효물을 포함하는 샴푸 조성물 및 이의 제조방법이 개시된다. ...
54공개안마겸용 기능성 샴푸대Function Shampoo Chair하르가이(Urtica laetevirens Maxim) 추출물, 어성초(Houttu...
198등록탈모 방지 및 모발 개선 기능을 갖는 샴푸 조성물Shampoo composition for preventing hair loss a...본 발명은, 약용식물워터를 포함하는 샴푸 조성물에 관한 것으로, 상기 약용식물워터는...
256등록와송을 이용한 아토피성 피부염 증상 개선용 화장료 조성물Cosmetic Composition for Improving Atopic Derm...본 발명은 와송을 이용한 화장료 조성물 및 이를 이용한 비누의 제조방법에 관한 것으...
288등록황칠나무 발효추출물을 함유한 모발용 화장료 조성물Hair cosmetic composition containing an extrac...본 발명은 모발용 화장료 조성물에 관련되며, 그 조성물에 있어서 (A) 황칠나무 발...
124등록청국장 샴푸 및 그 제조방법Shampoo with Fermented Soybean and Process of ...본 발명은 수용성 프로폴리스 발효 추출물, 적하수오 발효 추출물, 측백나무 발효 추...
260등록암에 대한 방사선 치료 증진용 조성물A composition for enhancing the radiotherapy o...본 발명은 샴푸진저(Zingiber zerumbet)의 조추출물 또는 그 조추출물의...

유사도 보기

sims[sim_idx]
array([1.        , 0.94207604, 0.93535827, 0.93282792, 0.90077393,
       0.8896695 , 0.888722  , 0.88676806, 0.88408099, 0.87945441])
Previous
잠재 의미 분석