본문 바로가기
파이썬

파이썬 scikit-learn에서 CountVectorizer를 사용하여 토큰을 추출하는 데 사용되지 않은 문서의 빈도를 계산할 수 있습니까?

by º기록 2020. 12. 16.
반응형

scikit-learn에서 CountVectorizer 클래스로 작업했습니다.

아래 표시된 방식으로 사용하면 최종 출력이 기능 또는 토큰 수를 포함하는 배열로 구성된다는 것을 이해합니다.

이러한 토큰은 키워드 세트에서 추출됩니다.

tags = [
  "python, tools",
  "linux, tools, ubuntu",
  "distributed systems, linux, networking, tools",
]

다음 단계는 다음과 같습니다.

from sklearn.feature_extraction.text import CountVectorizer
vec = CountVectorizer(tokenizer=tokenize)
data = vec.fit_transform(tags).toarray()
print data

우리가 얻는 곳

[[0 0 0 1 1 0]
 [0 1 0 0 1 1]
 [1 1 1 0 1 0]]

괜찮지 만 제 상황은 조금 다릅니다.

위와 같은 방식으로 기능을 추출하고 싶지만 data 의 행이 기능이 추출 된 문서와 동일하지 않기를 바랍니다.

즉, 다른 문서 세트의 수를 어떻게 얻을 수 있습니까?

list_of_new_documents = [
  ["python, chicken"],
  ["linux, cow, ubuntu"],
  ["machine learning, bird, fish, pig"]
]

그리고 얻다:

[[0 0 0 1 0 0]
 [0 1 0 0 0 1]
 [0 0 0 0 0 0]]

나는 CountVectorizer 클래스에 대한 문서를 읽었고, 용어를 특성 색인에 매핑하는 vocabulary 인수를 발견했습니다. 그러나 나는이 주장이 나를 도울 수있는 것 같지 않다.

조언을 주시면 감사하겠습니다.


 

해결 방법

 

어휘 가 당신이 원하는 것입니다. 다음과 같이 작동합니다.

>>> cv = sklearn.feature_extraction.text.CountVectorizer(vocabulary=['hot', 'cold', 'old'])
>>> cv.fit_transform(['pease porridge hot', 'pease porridge cold', 'pease porridge in the pot', 'nine days old']).toarray()
array([[1, 0, 0],
       [0, 1, 0],
       [0, 0, 0],
       [0, 0, 1]], dtype=int64)

따라서 원하는 기능을 키로 사용하여 사전을 전달합니다.

한 문서 세트에서 CountVectorizer 를 사용한 다음 해당 문서의 기능 세트를 새 세트에 사용하려면 원래 CountVectorizer의 vocabulary _ 속성을 ​​사용하고 새 것으로 전달하십시오. 따라서 귀하의 예에서는

newVec = CountVectorizer(vocabulary=vec.vocabulary_)

첫 번째 어휘를 사용하여 새 토크 나이저를 만듭니다.

 

참조 페이지 https://stackoverflow.com/questions/22920801

 

 

반응형

댓글