2015-01-13 8 views

답변

7

:

아마도 더 적절하게 선 패턴 반복자라고하는이 반복자는, 정규 표현식을 기반으로, 파일을 읽고 한 줄에 하나의 인스턴스를 반환합니다. 양식의 데이터가있는 경우

[이름] [라벨] [데이터]

에 관심이 통화가

CsvIterator(java.io.Reader input, java.lang.String lineRegex, 
      int dataGroup, int targetGroup, int uriGroup) 

이다는 첫 번째 매개 변수는 어떻게 데이터입니다 파일 판독기 또는 문자열 판독기와 같이 읽습니다. 두 번째 매개 변수는 판독기에서 읽은 각 행의 데이터를 추출하는 데 사용되는 정규 표현식입니다. ,

  • 1 개 이상의 공백 문자 (탭 다음에 (캡처 그룹이 인스턴스의 이름입니다)

    • 1 이상의 영숫자, : 당신의 예에서, 당신은로 변환 (\\w+)\\s+(\\w+)\\s+(.*)있어 (캡처 그룹이 라벨/대상)
    • 하나 이상의 알파벳 문자 뒤에 공간, ..)는
    • 이어서
    • 하나 이상의 공백 문자 (탭, 공간, ..) 뒤에
    • 0 개 이상의 문자 (데이터입니다)

    숫자 3, 2, 1은 데이터가 마지막에 왔음을 나타내며 대상은 두 번째이며 이름이 먼저옵니다. 정규식은 기본적으로 각 행의 형식은 문서에 명시된대로 보장 :

    test1 spam Wanna buy viagra? 
    test2 not-spam Hello, are you busy on Sunday? 
    

    CsvIterator 끔찍한 이름이고, 실제로 쉼표로 구분 된이 클래스에서 읽는 값이 아니기 때문에, 공백으로 구분 된 (이다 공간, 탭, ...) 값.

  • +0

    설명 : –

    +0

    좋은 설명입니다. 같은 One-vs-Rest 유형 분류기마다 여러 라벨을 지원합니까? – brianray

    0

    위의 대답에서 주어진 설명은 너무 좋습니다.

    그러나 한 점이 누락되었습니다. Line regex에서 입력 인스턴스의 데이터, 레이블 및 이름 필드 각각에 대한 정규 표현식 (정규식)의 순서는 입력 파일에 인스턴스가 제공되는 방식과 일치해야합니다. 즉, 이름 필드에 첫 번째 필드, 데이터 두 번째 필드 및 레이블을 입력 파일에 다음 세 번째 필드로 정규식 데이터 정규식 다음 레이블의 마지막 정규식을 제공해야합니다. 예는 다음과 같습니다.

    입력 인스턴스 : Mail67 (탭 공간) TCC 문제. 안녕하세요, 어떤 이유로 올드 마스터 페인팅 부서의 관리자가 TCC로부터 정보를 얻을 수 없었습니다. JDE를 통해 진행되는 것으로 보이지만 TCC에서 검색 할 때 아무 것도 나타나지 않습니다. 당신이 f .... (탭 공간) Inc에 제공 할 수있는 도움이나 지침

    CsvIterator 매개 변수 : CsvIterator (새 FileReader (파일 경로), "(\ w +) \ t (.*) \ t (\ w +) ", 2,3,1)