logo

TF-IDF(용어 빈도-역문서 빈도) 이해

TF-IDF 용어 빈도 역문서 기록 빈도를 나타냅니다. 시리즈나 말뭉치의 단어가 텍스트와 얼마나 관련성이 있는지 계산하는 것으로 정의할 수 있습니다. 의미는 텍스트에 단어가 나타나는 횟수에 비례하여 증가하지만 코퍼스(데이터 세트)의 단어 빈도에 의해 보상됩니다.

용어:



    용어 빈도: 문서 d에서 빈도는 주어진 단어 t의 인스턴스 수를 나타냅니다. 그러므로 본문에 이성적인 단어가 나올수록 관련성이 높아진다는 것을 알 수 있다. 용어의 순서는 중요하지 않으므로 벡터를 사용하여 용어 모델 가방의 텍스트를 설명할 수 있습니다. 논문의 각 특정 용어에 대해 값이 용어 빈도인 항목이 있습니다.

문서에 등장하는 용어의 가중치는 단순히 용어 빈도에 비례합니다.

tf(t,d) = count of t in d / number of words in d>
    문서 빈도: 전체 코퍼스 컬렉션에서 TF와 매우 유사한 텍스트의 의미를 테스트합니다. 유일한 차이점은 문서 d에서 TF는 용어 t에 대한 빈도 카운터이고, df는 문서 세트 N에서 용어 t의 발생 횟수라는 것입니다. 즉, 해당 단어가 존재하는 논문의 수는 DF이다.
df(t) = occurrence of t in documents>
    역 문서 빈도: 주로 단어의 관련성을 테스트합니다. 검색의 주요 목적은 수요에 맞는 적절한 기록을 찾는 것입니다. tf는 모든 용어를 동등하게 중요하게 간주하므로 논문에서 용어의 가중치를 측정하기 위해 용어 빈도를 사용하는 것이 가능하지 않습니다. 먼저, 해당 용어를 포함하는 문서 수를 세어 용어 t의 문서 빈도를 찾습니다.
df(t) = N(t) where df(t) = Document frequency of a term t N(t) = Number of documents containing the term t>

용어 빈도는 단일 문서에만 있는 용어의 인스턴스 수입니다. 문서의 빈도는 해당 용어가 나타나는 개별 문서의 수이지만 전체 자료에 따라 다릅니다. 이제 역지의 빈도에 대한 정의를 살펴보겠습니다. 단어의 IDF는 텍스트의 빈도로 구분된 코퍼스의 문서 수입니다.

idf(t) = N/ df(t) = N/N(t)>

더 일반적인 단어는 덜 중요한 것으로 간주되지만 요소(가장 명확한 정수)는 너무 가혹해 보입니다. 그런 다음 논문의 역빈도에 대한 로그(밑수 2 사용)를 취합니다. 따라서 용어 t의 if는 다음과 같습니다.



idf(t) = log(N/ df(t))>
    계산: Tf-idf는 용어가 시리즈 또는 자료의 텍스트에 얼마나 중요한지 결정하는 최고의 측정항목 중 하나입니다. tf-idf는 용어 빈도(tf)와 상호 문서 빈도(tf)(idf)를 기반으로 문서의 각 단어에 가중치를 할당하는 가중치 시스템입니다. 가중치가 높은 단어는 더 중요한 것으로 간주됩니다.

일반적으로 tf-idf 가중치는 두 가지 항으로 구성됩니다.

    정규화된 용어 빈도(tf) 역문서 빈도(idf)
tf-idf(t, d) = tf(t, d) * idf(t)>

Python에서 tf-idf 값은 다음을 사용하여 계산할 수 있습니다. Tfidf벡터화기() 방법 스켈런 기준 치수.

통사론:



sklearn.feature_extraction.text.TfidfVectorizer(입력)

매개변수:

    입력 : 전달된 매개변수 문서를 참조하며 파일 이름, 파일 또는 콘텐츠 자체일 수 있습니다.

속성:

    어휘 _ : 용어 사전을 키로, 값으로 반환합니다. 기능 지수. idf_ : 그것은 매개변수로 전달된 문서의 역문서 빈도 벡터입니다.

보고:

    fit_transform(): tf-idf 값과 함께 용어 배열을 반환합니다. get_feature_names(): 기능 이름 목록을 반환합니다.

단계별 접근 방식:

  • 모듈을 가져옵니다.

파이썬3




# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer>

>

>

  • 문서에서 문자열을 수집하고 문서에서 문자열 모음을 갖는 코퍼스를 생성합니다. d0, d1, 그리고 d2 .

파이썬3




# assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]>

>

>

  • 다음에서 tf-idf 값을 가져옵니다. 적합_변환() 방법.

파이썬3




# create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)>

>

스위치 메소드 자바

>

  • 말뭉치에 있는 단어의 IDF 값을 표시합니다.

파이썬3




# get idf values> print>(>' idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)>

>

>

산출:

  • 인덱싱과 함께 tf-idf 값을 표시합니다.

파이썬3




# get indexing> print>(>' Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>' tf-idf value:'>)> print>(result)> # in matrix form> print>(>' tf-idf values in matrix form:'>)> print>(result.toarray())>

>

>

산출:

그만큼 결과 변수는 고유 단어와 tf-if 값으로 구성됩니다. 아래 이미지를 사용하여 자세히 설명할 수 있습니다.

위 이미지에서 아래 테이블을 생성할 수 있습니다.

문서 단어 문서 색인 단어 색인 tf-idf 값
d0 ~을 위한 0 0 0.549
d0 괴짜 0 1 0.8355
d1 괴짜 1 1 1,000
d2 r2j 2 2 1,000

다음은 말뭉치에서 단어의 tf-idf 값을 계산하는 방법을 설명하는 몇 가지 예입니다.

예시 1: 다음은 위의 접근 방식을 기반으로 한 전체 프로그램입니다.

파이썬3




# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'Geeks for geeks'> d1>=> 'Geeks'> d2>=> 'r2j'> # merge documents into a single corpus> string>=> [d0, d1, d2]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get idf values> print>(>' idf values:'>)> for> ele1, ele2>in> zip>(tfidf.get_feature_names(), tfidf.idf_):> >print>(ele1,>':'>, ele2)> # get indexing> print>(>' Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>' tf-idf value:'>)> print>(result)> # in matrix form> print>(>' tf-idf values in matrix form:'>)> print>(result.toarray())>

>

>

버블 정렬

산출:

예시 2: 여기서 tf-idf 값은 고유한 값을 갖는 코퍼스로부터 계산됩니다.

파이썬3




# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'geek1'> d1>=> 'geek2'> d2>=> 'geek3'> d3>=> 'geek4'> # merge documents into a single corpus> string>=> [d0, d1, d2, d3]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>' Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>' tf-idf values:'>)> print>(result)>

>

>

산출:

예시 3: 이 프로그램에서 tf-idf 값은 유사한 문서가 있는 코퍼스에서 계산됩니다.

파이썬3




# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign documents> d0>=> 'Geeks for geeks!'> d1>=> 'Geeks for geeks!'> # merge documents into a single corpus> string>=> [d0, d1]> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>' Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>' tf-idf values:'>)> print>(result)>

>

>

산출:

예시 4: 다음은 단일 단어의 tf-idf 값을 계산하는 프로그램입니다. 괴짜 여러 문서에서 여러 번 반복됩니다.

파이썬3




# import required module> from> sklearn.feature_extraction.text>import> TfidfVectorizer> # assign corpus> string>=> [>'Geeks geeks'>]>*>5> # create object> tfidf>=> TfidfVectorizer()> # get tf-df values> result>=> tfidf.fit_transform(string)> # get indexing> print>(>' Word indexes:'>)> print>(tfidf.vocabulary_)> # display tf-idf values> print>(>' tf-idf values:'>)> print>(result)>

>

>

산출:

삽입 정렬