[음악] 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, 민주당의 민주 순입니다 오바마에 관한 주요 단어들이 여럿 등장함을 알 수 있죠 [음악]