2016-07-21 7 views
0

코퍼스가 생성되었습니다. 스톱 워드가 정의되었으며, 클렌징이 완료되었습니다 (removePunctuation, removeNumbers, tolower ...).R - 패키지 tm - 형태소 분석 후 각 공통 루트에 해당하는 용어는 무엇입니까?

이제 코퍼스는 줄기 준비가되었습니다. 이 함수는 올바르게 실행되고 모든 것이 작동하지만 ...

각 공통 루트에 어떤 단어가 스틱되고 있는지 알아야합니다. 그것은 tm 패키지를 사용하여 가능합니까? 아니면 다른 패키지? 그들 모두가 기간 내 새로운 코퍼스로 막아야하는 예를 들어

, TermA1, TermA2, TermB1, TermB2, TermB3기간을 반영한다. 그러나, 나는 각 루트 단어와 연관되는 단어를 아는 것도 필요, 따라서 최적의 출력은 다음과 같아야합니다 TM을 패키지에서

Term  Stemm 
TermA1 Term 
TermA2 Term 
TermB1 Term 
TermB2 Term 
TermB3 Term 
... 
WordA1 Word 
WordB1 Word 
WordB2 Word 
WordB3 Word 
WordC1 Word 

답변

1

각 단어를 막아야 완료 할 수있는 기능 stemCompletion이있다 특정 사전이 주어진다. 내가 독일어 모음과 동작을 확인하기 위해이 시도 : [더 독일어 단어 UPDATE]

:

library(tm) 
data("crude") 
words <- stemCompletion(c("compan", "entit", "suppl"), crude) 
stemmed <- names(words) 
stemcomp <- unname(words) 
data.table(stemmed, stemcomp) 

참고 : stemCompletion {tm}

다음과 같이 출력 할 얻으려면

library(SnowballC) 
library(tm) 
library(data.table) 

text <- c("für", "aktuelle", "Nachrichten", "und", "Themen", "Bilder", 
     "und", "Videos", "aus", "den", "Bereichen", "News", "Wirtschaft","Politik","können", "Fremdschämen", "Lebensmüde", "Erklärungsnot") 

stem <- stemmed <- wordStem(text, language = "porter") 
completed <- stemCompletion(stemmed, text) 
comparison <- data.table(text, stemmed, completed) 

테이블 비교에서 tha t 독일어 모국어로 된 원래 단어는 줄기가 없지만 "f"와 같은 특정 줄기를 stemCompletion("f", text)으로 완성하려고하면 "für"라는 올바른 단어를 얻을 수 있습니다. 이것은 이상합니다. 아마도 여기에서 팔로우하고 다른 해결 방법을 찾으려고 할 수 있습니다.

+0

Perfect. 유일한 문제는 입력 언어 (독일어)입니다. 대부분의 줄기는 움라우트 ("ä", "ö", ü)를 보통 모음 ("a", "o", "u")으로 제거하는 것으로 보인다. StemCompletion은 해당 단어를 올바르게 재사용 할 수 없습니다. – agustin