Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changing required scala version to 2.11.5+ #74

Closed
iitns314 opened this issue Oct 10, 2015 · 12 comments
Closed

Changing required scala version to 2.11.5+ #74

iitns314 opened this issue Oct 10, 2015 · 12 comments

Comments

@iitns314
Copy link

안녕하세요?
좋은 라이브러리 만들어주셔서 잘 사용하고 있습니다.

README에 있는 예제 중, Tokenize에서
TwitterKoreanProcessorJava.tokensToJavaKoreanTokenList 메소드를 이용하면, Java의 List<KoreanTokenJava>로 반환됩니다.

KoreanTokenJava 클래스는 getter가 없어서 내부에 있는 내용을 알기 어렵습니다.
그래서, KoreanTokenJava와 tokensToJavaKoreanTokenList에 각각 대응하는 클래스와 메소드를 각각 구현하고 있습니다.

tokensToJavaKoreanTokenList 함수 구현 중에,

....
public static List<KoreanTokenJava> tokensToJavaKoreanTokenList(Seq<KoreanToken> tokens) {
    Iterator<KoreanToken> tokenized = tokens.iterator();
....

를 쓰신 부분이 있는데요, (com.twitter.penguin.korean.TwitterKoreanProcessor의 69번째 라인)
이 부분을 JDK 8, 그리고 scala-library-2.10.4.jar 환경에서 사용하게 될 경우, 다음과 같은 에러메시지가 발생합니다.

The method iterator() is ambiguous for the type Seq<KoreanTokenizer.KoreanToken>

알려진 바에 의하면, 스칼라 2.11.4까지는 JVM 스펙에 대한 위반사항이 있었고, 이것이 2.11.5에서 수정되었다고 합니다. (출처)

혹시 pom.xml에 명시된 scala.version을 2.11.5 보다 최신 버젼으로 올려주실 수 있으신지요.

제가 문제의 원인을 잘못 이해한 것이라면, 지적 부탁드립니다.
또한, tokenize 되어 Seq에 저장된 토큰들(Seq<SomeKindOfToken> tokens)을 자바에서 읽어올 수 있는 방법이,

List<KoreanTokenJava> list = TwitterKoreanProcessorJava.tokensToJavaKoreanTokenList(tokens);

외에 존재하는지도 문의드립니다.

@iitns314
Copy link
Author

확인해보니 scala-library를 2.11.5로 변경해도 에러메시지가 사라지지 않고, 2.12.0으로 올리니 없어졌습니다.

@hohyon-ryu
Copy link
Contributor

스칼라 안정된 최신 버전은 2.11.7인데요, 그 버전을 써도 될까요?

@iitns314
Copy link
Author

지금 2.11.7로 확인해보니 같은 에러메시지가 발생합니다.

@hohyon-ryu
Copy link
Contributor

TwitterKoreanProcessorJava.tokensToJavaKoreanTokenList(tokens)이 자바 Token으로 바꾸어주기 때문제 가장 좋은 방법인 것 같습니다.

@hohyon-ryu
Copy link
Contributor

scala-test가 아직 2.11 버전용 밖에 없어서 2.12로는 못 올릴 것 같습니다. ㅠㅜ

@iitns314
Copy link
Author

그러면 KoreanTokenJava에 getter를 추가해주실 수 있으신가요?

말씀하신

TwitterKoreanProcessorJava.tokensToJavaKoreanTokenList(tokens)

를 사용하면, List<KoreanTokenJava>가 반환되는데요, KoreanTokenJava에는 getter가 없어서, 토큰의 KoreanPosJava pos를 읽어올 수 없습니다.

@hohyon-ryu
Copy link
Contributor

https://github.com/twitter/twitter-korean-text/blob/master/src/main/java/com/twitter/penguin/korean/KoreanTokenJava.java#L39

KoreanTokenJava.getPos()를 만들어 놓은 것 같은데요, 다른 것이 필요한가요?

@iitns314
Copy link
Author

이미 구현되어 있군요!
제가 README에 있는 4.0 버젼을 바라보고 있어서 그런 것 같습니다.
4.1.3으로 올려서 진행해보겠습니다.

@hohyon-ryu
Copy link
Contributor

https://github.com/twitter/twitter-korean-text/pull/75/files 코드 리뷰 부탁드립니다.

@iitns314
Copy link
Author

4.1.3으로 올려서 getter 확인 했습니다.
빠르게 답 주셔서 감사합니다!

@iitns314
Copy link
Author

getter가 있어서, KoreanTokenJava의 별도 구현은 필요하지 않을 것 같습니다.
이 이슈도, 사실 KoreanTokenJava의 별도 구현 과정에서 발생한 이슈이기 때문에,
만약 (유닛테스트를 실패한다거나 하는) 문제가 발생한다면, scala-library의 버젼을 올리지 않으셔도 될 것 같습니다!

@hohyon-ryu
Copy link
Contributor

감사합니다. 마침 트위터에서도 스칼라 버전을 업그레이드하기로 해서 2.11 버전이 필요하던 터였습니다. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants