2012-09-04 1 views
4

현재 프로젝트에서 자연어를 파싱하는 데 관심이 있습니다. 한 테스트는 파일에서 텍스트를 읽고 특정 문자를 제거한 다음 텍스트를 단일 단어로 토큰 화합니다. 이 테스트는 실제로 고유 한 단어의 수를 비교합니다. 이클립스에서이 테스트는 "녹색"이며, 예상보다 많은 수의 단어가 생성됩니다. 단어의 목록을 비교, 나는 다음과 같은 추가 단어를 참조하십시오왜 maven이 Eclipse와 다른 utf-8 문자를 사용합니까? (테스트는 Eclipse에서 실행되고, 실패는 실패합니다.)

  • card⊙s
  • institution⊙s
  • issuer⊙s
  • provider⊙s
  • PSAM을 acquirer⊙s을 ⊙s
  • ⊜from⊝
  • ⊜slot⊝
  • ⊜to⊝

텍스트 소스를 보면, 그것은 멀리 필터링해야 다음과 같은 문자가 포함되어 있습니다 "" '

이 이클립스에서 작동하지만,하지 받는다는한다. 나는 utf-8을 사용하고있다. 파일은 내가 다음을 지정 받는다는 치어에 제대로 인코딩 할 것 :

<properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <org.apache.lucene.version>3.6.0</org.apache.lucene.version> 
</properties> 

편집 : 여기에 파일을 읽고 코드 (일식에 따른되는, UTF-8로 인코딩이)입니다.

 BufferedReader reader = new BufferedReader(
       new FileReader(this.file)); 
     String line = ""; 
     while ((line = reader.readLine()) != null) { 
      // the csv contains a text and a classification 
      String[] reqCatType = line.split(";"); 
      String reqText = reqCatType[0].trim(); 
      String reqCategory = reqCatType[1].trim(); 
      // the tokenizer also removes unwanted characters: 
      String[] sentence = this.filter.filterStopWords(this.tokenizer 
        .tokenize(reqText)); 
      // we use this data to train a machine learning algorithm 
      this.dataSet.learn(sentence, reqCategory); 
     } 
     reader.close(); 

편집 : 다음 정보는 문제를 분석하는 데 유용 할 수 있습니다 :

mvn -v 
Apache Maven 3.0.3 (r1075438; 2011-02-28 09:31:09-0800) 
Maven home: /usr/share/maven 
Java version: 1.6.0_33, vendor: Apple Inc. 
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 
Default locale: en_US, platform encoding: MacRoman 
OS name: "mac os x", version: "10.6.8", arch: "x86_64", family: "mac" 
+0

당신이 파일을 읽을 수있는 코드를 보여줍니다. – jtahlborn

+0

아마도 http://maven.apache.org/plugins/maven-resources-plugin/examples/encoding.html이 도움이 될까요? – afk5min

+0

제안에 감사드립니다, @ afk5min,하지만 제대로 적용해도 문제가 해결되지 않습니다. 예제에서 구성을 사용하여 maven-resources-plugin을 추가했지만 아무 것도 변경되지 않았습니다. "[정보] 'UTF-8'인코딩을 사용하여 필터링 된 리소스 복사 [정보] 10 개의 리소스 복사 "이것이 도움이된다고 생각한 이유는 무엇입니까? – oerich

답변

3

그래서, 데이터 파일은 UTF-8입니다. 실행중인 Java 프로그램은 의미를 해석하는 지시 사항이되므로 해당 파일의 Eclipse 설정은 아무런 영향을 미치지 않습니다.

FileReader는 항상 일반적으로 나쁜 생각 인 플랫폼 기본 인코딩을 사용합니다. Maven은 그렇지 않지만 Eclipse는 "platorm default"를 설정합니다.

코드를 수정하여 인코딩을 지정하십시오.

참조의 JavaDoc :

To specify these values yourself, construct an InputStreamReader on a FileInputStream. 
+0

고마워요, 그게 해결책이었습니다. 물론, 나는 또한 내가 원하지 않는 표식을 읽는 부분을 바꾸어야했다. 이제 BufferedReader는 다음과 같이 시작됩니다 :'BufferedReader reader = new BufferedReader (new FileStreamStream (new FileInputStream (filename), Charset.forName ("UTF-8")))'입력 파일에 대해, 여기에 설명 된대로 인코딩 : [link] (http://docs.oracle.com/javase/tutorial/essential/io/file.html). 나는 현명한 도구에 속는 것을 싫어한다. – oerich

관련 문제