2014-11-27 10 views
-1

몇 가지 단어 계산 알고리즘을 사용했고 더 자세히 살펴보면 원래 텍스트보다 적은 단어를 얻었 기 때문에 궁금합니다. 예를 들어 "it 's"를 한 단어로 계산했기 때문입니다. 그래서 해결책을 찾고자했지만 어떤 성공도 없었습니다. 그래서 나는 "그것의 것"과 같은 "짧은 단어"를 "기본 단어"로 변형시키는 것이 존재하는지, "그것이 있습니다"라고 스스로에게 물었습니다.짧은 단어에서 원래 단어로의 변환

도움 주셔서 감사합니다.

+0

귀하의 코드는 어디에 있습니까? 당신이 사용한 알고리즘은 무엇입니까? –

답변

0

기본적으로 약식 용어를 해당 긴 버전으로 매핑하는 데이터 구조를 제공해야합니다. 그러나 이것은 간단하지 않을 것입니다. 예를 들어 "고객의 자동차"를 변형하고 싶지는 않을 것입니다. ~ "고객이 자동차입니다."

이러한 사례를 관리하려면 처리중인 언어와 해당 문법 규칙을 더 잘 이해하고있는 경험적 추론이 필요할 것입니다.

+0

당신이 언급 한 예가 그러한 도구가 이미 존재하는지 스스로에게 묻는 이유입니다) – Flu

+0

맞춤법 검사 API가 이러한 기능을 제공 할 수는 있지만 내부적으로 만 사용한다고 가정합니다. OpenOffice와 같은 오픈 소스 도구가 단어 집계를 구현하는 방법을 확인 했습니까? – user1438038

+0

감사합니다. API를 확인할 것입니다 – Flu

0

난 그냥 도전을 위해 처음부터 이것을 만들었습니다. 그것은 내 목표를 위해 일하는 것 같다. 그것이 당신을 위해 어떻게 작동하는지 알려주십시오.

public static void main(String[] args) { 

    String s = "it's such a lovely day! it's really amazing!"; 

    System.out.println(convertText(s)); 
    //output: it is such a lovely day! it is really amazing! 

} 

public static String convertText(String text) { 
    String noContraction = null; 
    String replaced = null; 
    String[] words = text.split(' '); 

    for (String word : words) { 
     if (word.contains("'s")) { 
      String replaceAposterphe = word.replace("'", "$"); 
      String[] splitWord = replaceAposterphe.split('$'); 
      noContraction = splitWord[0] + " is"; 
      replaced = text.replace(word, noContraction); 
     } 
    } 
    return replaced; 
} 

나는 이것을 C#에서 작성하여 Java로 변환하려고 시도했다. 구문 오류가 있으면이를 지적하십시오.

+0

고마워하지만이 알고리즘은 예를 들어 "클라이언트가 자동차입니다." "고객은 자동차입니다." – Flu

+0

"고객의 차"를 "고객이 차다"라고 말하려고 한 것 같습니다. user1438038에 언급 된 것처럼, 소유물과 복수형의 차이를 알 수있는 방식으로 구축 된 알고리즘이 필요합니다. 나는 그것이 할 수 있다고 확신 하나, 그것은 미친 알고리즘 일 것이다. –