2017-10-03 17 views
0

레이블이없는 공백으로 구분 된 파일에있는 데이터 집합에서 주제 모델링을 수행하려고합니다. 말렛이 모든 토큰을 적재 할 수는 없습니다. 나는 리눅스와 맥에서 버전 2.0.8을 사용하고있다. 1 2 3 4 5말렛이 레이블이없는 라인에서 모든 토큰을로드하는 방법?

그럼

망치 임포트 파일 --token 정규식 [0 달렸다 문제에 대한 시험과

는, I는 하나 개의 라인을 가진 파일을 생성 -9] + --keep 시퀀스 사실 --label 0 --input testdata로 --output testLoaded 내가 4 토큰을 얻어야한다, 그러나 나는 단지 3를 얻을

을 testLoaded --input 망치 기차 - 주제 :

,536,

데이터가로드되었습니다. 최대 토큰 : 3 개 총 토큰 : 나는 --data 플래그 사용하려고하면 3

그것은 심지어 악화 (같은 결과를 내가 사용 여부 및 --label 0 또는 그 자체 --data 2)

말렛 가져 오기 파일 --token-regex [0-9] + --keep-sequence true - 레이블 0 - 데이터 2 - 입력 된 testData - 출력 testLoaded2 말렛 기차 - 주제 - 입력 testLoaded2

데이터가로드되었습니다. 최대 토큰 : 1 개 총 토큰 : 그래서 중 1

나는 첫 번째 토큰을 잃고, 또는 나는 단지이 나중에 출력에 나타나고있다 (첫 번째 토큰을 얻을, 그래서 나는 그 행의 나머지를로드하지 압니다 후자의 경우 단일 토큰으로 사용).

답변

1

Mallet은 2 단계로 줄을 구문 분석합니다. 먼저, --line-regex 옵션을 사용하여 줄을 필드로 분할합니다. 그런 다음 해당 세그먼트를 세 개의 인스턴스 필드 (이름, 레이블, 데이터) 중 하나에 매핑합니다.

두 번째 부분 인 regex 그룹에서 인스턴스 필드로의 매핑 만 변경되기 때문에 명령이 작동하지 않습니다. 그것은 Mallet에게 처음 두 필드를 분리하도록 지시하고 있지만 무시합니다. 여기에 기본 동작의 예는 다음과 같습니다

$ bin/mallet import-file --input token_test.txt --keep-sequence \ 
--token-regex [0-9]+ --print-output 
name: 1 
target: 2 
input: 0: 3 (0) 
1: 4 (1) 
2: 5 (2) 

우리가 --label 0 그냥 두 번째 필드를 무시 그것을 추가 할 수 있지만 여전히 캡처 경우

이제 우리는 라인 정규식을 재정의하는 경우
$ bin/mallet import-file --input token_test.txt --keep-sequence \ 
--token-regex [0-9]+ --label 0 --print-output 
name: 1 
target: <null> 
input: 0: 3 (0) 
1: 4 (1) 
2: 5 (2) 

, 우리가 잡을 수 전체 필드를 하나의 필드로 사용하여 데이터를 모두 데이터로 사용 :

$ bin/mallet import-file --input token_test.txt --keep-sequence \ 
--token-regex [0-9]+ --line-regex '(.*)' --data 1 --name 0 --label 0 --print-output 
name: csvline:1 
target: <null> 
input: 0: 1 (0) 
1: 2 (1) 
2: 3 (2) 
3: 4 (3) 
4: 5 (4)