수색…


소개

자연어 처리 (NLP)는 인간이 생성 한 텍스트 입력에서 정보를 검색하는 데 주력하는 컴퓨터 과학 분야입니다.

용어 빈도 행렬 만들기

문제에 대한 가장 간단한 접근 방법 (그리고 지금까지 가장 일반적으로 사용되는 방법)은 문장을 토큰 으로 분리하는 것입니다. 간단하고 단순한 단어 는 사람들이 사용하고 수신하는 사람들에게 추상적이고 주관적인 의미가 있습니다. 토큰 은 객관적인 해석을합니다 : 순서가 지정된 문자 (또는 바이트) 순서. 문장이 분리되면 토큰의 순서는 무시됩니다. 단어 모델의 가방으로 알려진 문제에 대한이 접근법.

용어 빈도 는 각 토큰에 가중치 가 할당되는 사전입니다. 첫 번째 예에서는 R 패키지 tm 을 사용하여 코퍼스 코퍼스 ( 문서 모음)에서 용어 빈도 행렬을 구성합니다.

require(tm)
doc1 <- "drugs hospitals doctors"
doc2 <- "smog pollution environment"
doc3 <- "doctors hospitals healthcare"
doc4 <- "pollution environment water"
corpus <- c(doc1, doc2, doc3, doc4)
tm_corpus <- Corpus(VectorSource(corpus))

이 예제에서는 두 개의 함수 CorpusVectorSource 사용하여 패키지 tm 의해 정의 된 Corpus 클래스의 Corpus 만들었습니다.이 함수는 문자 벡터에서 VectorSource 객체를 반환합니다. tm_corpus 객체는 각 문서를 설명하는 추가 메타 데이터 (선택 사항)와 함께 문서를 나열합니다.

str(tm_corpus)
List of 4
 $ 1:List of 2
  ..$ content: chr "drugs hospitals doctors"
  ..$ meta   :List of 7
  .. ..$ author       : chr(0) 
  .. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-03 00:31:34"
  .. ..$ description  : chr(0) 
  .. ..$ heading      : chr(0) 
  .. ..$ id           : chr "1"
  .. ..$ language     : chr "en"
  .. ..$ origin       : chr(0) 
  .. ..- attr(*, "class")= chr "TextDocumentMeta"
  ..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
[truncated]

우리는 일단 Corpus , 우리는 사전 처리에 포함 된 토큰을 진행할 수 Corpus 최종 출력 (용어 주파수 매트릭스)의 품질을 향상시킬 수 있습니다. 이를 위해 tm 함수 tm_map 사용합니다. tm_mapapply 함수 계열과 비슷하게 각 문서에 함수를 적용하여 코퍼스의 문서를 변환합니다.

tm_corpus <- tm_map(tm_corpus, tolower)
tm_corpus <- tm_map(tm_corpus, removeWords, stopwords("english"))
tm_corpus <- tm_map(tm_corpus, removeNumbers)
tm_corpus <- tm_map(tm_corpus, PlainTextDocument)
tm_corpus <- tm_map(tm_corpus, stemDocument, language="english")
tm_corpus <- tm_map(tm_corpus, stripWhitespace)
tm_corpus <- tm_map(tm_corpus, PlainTextDocument)

이러한 변형에 따라 마침내 다음과 같은 용어 빈도 행렬을 만듭니다.

tdm <- TermDocumentMatrix(tm_corpus)

그것은

<<TermDocumentMatrix (terms: 8, documents: 4)>>
Non-/sparse entries: 12/20
Sparsity           : 62%
Maximal term length: 9
Weighting          : term frequency (tf)

그것을 매트릭스로 변환하여 볼 수있는

as.matrix(tdm)

           Docs
Terms       character(0) character(0) character(0) character(0)
  doctor               1            0            1            0
  drug                 1            0            0            0
  environ              0            1            0            1
  healthcar            0            0            1            0
  hospit               1            0            1            0
  pollut               0            1            0            1
  smog                 0            1            0            0
  water                0            0            0            1

각 행은 각 토큰의 빈도를 나타냅니다. 각 토큰의 빈도는 각 문서 (4 개 문서, 4 개 열)에서 나타납니다 (예 : environment - 주변 environ ).

앞의 줄에서는 각 쌍 토큰 / 문서에 절대 빈도 (즉, 문서에 나타나는 토큰 인스턴스의 수)를 가중했습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow