[음악]
TF-IDF를 실제로 계산해 보죠
이건 주의해야 할 점인데
오바마 문서의 TF-IDF만을 따로 떼서
계산할 수 없는데 TF-IDF는 전체 말뭉치에 종속적이기 때문입니다
모든 문서에서 등장하는 단어수를
정규화해야만 하죠
그러니 전체 말뭉치부터 계산해야 합니다
한 번 해볼까요
그럼
말뭉치의
TF-IDF를 계산합니다
두 단계로 나누어서 진행합니다
먼저 전체 말뭉치의 단어수를 계산합니다
인물 표에 word_count란 열을 추가합니다
현재는 바락 오바마에 대해서만 되어 있는데
모든 사람을 대상으로 합니다
graphlab.text_analytics.count_words을 호출하고
입력으로 텍스트 열을
넣습니다
즉 텍스트 열의 단어수를 셉니다
분명히 하자면 그렇죠
그다음 SFrame people을 출력합니다
SFrame의 처음 몇 줄을 출력합니다
실행하면 이렇게 나오죠
URI 열과, 위치, 웹페이지, 이름,
텍스트, 단어수 사전이 오른쪽에 추가되어있습니다
좋습니다. 이제 TF-IDF를 계산하죠
단어수와 같이 TF-IDF 시스템을 직접 구현해야 되지만
시간이 걸릴 것입니다
graphlab에 이미 구현되어 있으니
시간을 단축하기 위해 구현된 걸 씁니다
graphlab.text_analytics을 호출합니다
단어수와 같이 tf_idf란 함수가 있습니다
입력만 넣으면 되는데
word_count를 넣습니다
그러면 TF-IDF가 출력됩니다
어떤 모습일지 보여드리죠
아 오타가 있었네요
word_count가 되어야 합니다
word_counts가 아니라요
문서 50000개의 전체 말뭉치애서
단어 빈도를 계산, 정규화합니다
그러면 각 문서에 대한 표가 나오게 되는데
각 문서의 TF-IDF 사전입니다
인물 표에 새로운 열 TF-IDF를
추가합니다
방금 계산한 TF-IDF를 저장합니다
표 하나에 전부 있고 그중 docs 열입니다
됐죠 방금 추가했습니다
모든 문서에 대한 TF-IDF를 계산해서 넣었습니다
검토하죠
이제
오바마 문서의 TF-IDF를
검토할 겁니다
단어수 벡터를 조사하고 정렬했듯이
TF-IDF를 조사하고 정렬할 겁니다
최종 버전에서 새로운 열 두 개를 추가했으니
오바마 변수를 다시 읽어들입니다
인물 중에서 이름이 바락 오바마인
사람을 찾습니다
오바마를 생성했고 단어수 때와 같이
obama_tfidf_table를 만들어서 정렬합니다
사전 형식입니다
전과 같은 방식으로 정렬합니다
쌓고 나서 정렬합니다
이제 해보죠
표를 만들지 않고 한 줄로 처리합니다
아 한 줄로 해볼게요
아까 했던 것처럼
오바마 변수에서
TF-IDF 열만 골라내면 깔끔하게 나옵니다
스택 메소드를 호출하면 사전을 입력 받아
두 열로 쌓습니다
TF-IDF를 쌓게 되죠
새 열 이름을 출력하는데
이름은 단어와 TF-IDF가 됩니다
신기한 걸 하나 보여드리죠
아 괄호를 닫지 않았네요
파이썬에서 다양한 방법으로 쓸 수 있는
요령 하나를 보여드리죠
이 뒤로 sort 함수를 체이닝합니다
.sort를 입력합니다
TF-IDF 열의 출력을 정렬합니다
오름차순을 거짓으로 설정합니다
이전엔 몇 줄에 걸쳐 써야 했던 걸 이제는 한 줄로 됩니다
오바마의 TF-IDF 열에서
단어 열, TF-IDF 열을 쌓아서
내림차순으로 정렬합니다
높은 데서 낮은 순으로요
이건 돌리기 전에 어땠는지 회상해보죠
단어수만 셌을 땐 이랬습니다
가장 많이 나오는 단어는 the, in, and, of
his, Obama, act, a, he 순이었죠
오바마 빼고는 별로 가치가 없는 정보입니다
TF-IDF를 실행해보죠
여기서 가장 정보가치가 높은 단어는 오바마인데
문서가 그의 관한 것임을 상기해보면 당연한 결과죠
그다음 art, Iraq, control, law, ordered,
military, involvement, response, democratic, 민주당의 민주 순입니다
오바마에 관한 주요 단어들이
여럿 등장함을 알 수 있죠
[음악]