2016-06-10 1 views
1

일부 텍스트 마이닝을 수행하기 위해 R-tm-Rweka 패키지를 사용하고 있습니다. 한 번에 tf-tdm을 작성하는 대신 내 목적에 충분하지 않아서 ngram을 추출해야합니다. 나는 @Ben 함수 TrigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 3)) tdm <- TermDocumentMatrix(a, control = list(tokenize = TrigramTokenizer))
을 사용하여 트라이 그램을 추출했습니다. 출력에 명백한 오류가 있습니다 (아래 참조). 4, 3 및 2 단어 구문을 선택합니다. 이상적으로, 그것은 단지 4 단어 명사구를 집어 들고 (3 단어 및 2 단어) 나머지를 버려야합니다. 파이썬 NLTK에 백업 토큰 화인 옵션이있는 것처럼이 솔루션을 강제로 수행하는 방법은 무엇입니까?RWeka에서 백업 토크 나이저 스위치를 구현하는 방법은 무엇입니까?

추상적 인 전략 ->this is incorrect>
추상 전략 보드 ->incorrect
추상 전략 보드 게임 -> this should be the correct output

액센추어 임원
액센추어 임원 간단한
액센추어 임원 간단한 코멘트

많은 감사합니다.

+0

요약하면, 2 그램과 3 그램을하고 싶지 않습니까? –

+0

말하기 : 먼저 4-gram을 시도한 다음 3 단어 창을 시도한 다음 2 단어 창을 시도하여 하나의 단어가 실패합니다. 그러나 가장 큰 관련 항목 만보고하십시오 (4-, 3-, 2 단어 구문을 반복하지 마십시오) – Pradeep

답변

0

나는 당신이 만든 시도에 매우 가깝다고 생각합니다. 너는 Weka에게 2 그램과 3 그램의 토큰을 잡는 것이었다는 것을 이해해야한다는 것을 제외하고는; 그것은 단지 Weka_control이 어떻게 지정되었는지입니다.

대신 다른 토큰 라이저에서 다른 토큰 크기를 사용하고 환경 설정 또는 결정 규칙에 따라 결과를 선택하거나 병합하는 것이 좋습니다.

N-gram 워드 클럭에서이 great tutorial을 확인해 볼 가치가 있다고 생각합니다.

N 그램의 텍스트 마이닝을위한 견고한 코드는 다음과 같습니다

4 그램에 대한
# QuadgramTokenizer #### 
QuadgramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 4, max = 4) 

,

# TrigramTokenizer #### 
TrigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 3, max = 3) 

3 그램의 경우, 물론

# BigramTokenizer #### 
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2) 

의 2 그램을 위해.

Weka_control을 범위로 설정하는 대신이 같은 다른 그램 크기를 별도로 실행하여 이전 문제를 피할 수 있습니다.

는이 같은 토크 나이저를 적용 할 수 있습니다

tdm.ng <- TermDocumentMatrix(ds5.1g, control = list(tokenize = BigramTokenizer)) 
dtm.ng <- DocumentTermMatrix(ds5.1g, control = list(tokenize = BigramTokenizer)) 

당신은 아직도 단지 reproducible 예를 제공해 주시기 바랍니다 문제를 가지고 있고 후속 것입니다 경우.

+0

감사합니다. Hack-R. 나는이 스 니펫을 돌렸다. 문제는 다른 곳으로 옮겼습니다. 4, -3, -2 그램의 구를 반영하기 위해 용어 문서 행렬을 얻는 대신, 나는 여전히 하나의 단어를 얻고 있습니다. 예 : 'deutsche'는 유효하지만 'deutche bank'(유효한 bigram으로 인식되기를 원함)가 인식되지 않습니다. 내 이해의 문제는 어디에 있습니까? – Pradeep

+0

@Pradeep 알겠습니다. 나를 도울 수 있기 위해서는 재현 할 수있는 예가 필요하다. 그래서 나는 내 컴퓨터에서 문제를 볼 수 있고 그것을 고치는 일을보기 위해 노력할 수있다.내장 또는 공용 데이터 세트를 사용하고 전체 코드를 붙여서이 문제를 재현 할 수 있습니까? –

+0

재현 가능한 데이터 세트를 게시합니다. 한편 [@Ben] (http://stackoverflow.com/questions/16836022/findassocs-for-multiple-terms-in-r)을 확인했습니다. 내 문제를 좀 더 정확하게 정의 할 수있을 것 같아. NGram 경로 대신에, 나는 단지 식별 된/지정된 (4, 3, 2 단어)의 용어 빈도를 원한다. 벡터는 용어 문서 행렬에 열로서 저장된다. Like Deloitte Haskin 판매 가격 Waterhouse 렉시 스 넥시 스 등등. – Pradeep

관련 문제