Stanford CoreNLP 토큰 이해 임의의 구문 일치를위한 Regex 구문

staticFlow

그래서 최근에 NLP로 작업 해 왔고 / test /와 같은 매우 간단한 일치 이외의 다른 것에 정규식 구문을 사용하는 데 문제가 있습니다. 제가 찾고있는 최종 게임은 콘텐츠 어딘가에 특정 단어가 포함 된 구문을 일치시키는 것입니다. 내가 모델링하려는 음성 패턴은 매우 구조화되어 있지만 인간의 음성은 가변적이므로 구문은 무수히 많은 방법을 시작할 수 있지만 구문에 특정 키워드가 포함되어있는 한 세고 싶습니다. 따라서 예를 들어 TokensRegex에서 모델링하려는 정규식은 다음과 같습니다.

.*(show).*(cars).*(\d{0,9})(km|mi).*

다음과 같은 구문과 일치합니다.

"please show me all cars within 100 km of me"

복잡한 문구를 만들 수 있다는 것은 문서에서 나에게 분명하지 않습니다. 가능한 경우 구문으로 변환하는 방법을 보는 데 문제가 있습니다. 내가 일치하는 것처럼 보이는 것에 가장 가까운 것은 다음과 같습니다.

"[]*/(show)/[]*/(cars)/[]*[word>=0]/(kilometer|miles)/[]"

이것은 일치를 확인하는 데 사용하는 코드의 일부입니다.

//value is the regex, tokens is the List<CoreLabel>s of text to try and match
pattern = TokenSequencePattern.compile(value);
TokenSequenceMatcher matcher = pattern.getMatcher(tokens);
while (matcher.find()) {
    String matchedString = matcher.group();
    System.out.println(matchedString);
    return true;
}

디버깅 할 때 매처 내부의 요소가 CoreLabels 목록임을 알 수 있습니다.

(show,me,all,cars,within,a,hundred,kilometers,of,me) 

패턴은 SequencePattern 목록으로 컴파일됩니다.

 (*,TextAnnotation:/show/,*,TextAnnotation:/cars/,*,TextAnnotation GE 0.0, TextAnnotation:/(kilometer[s]?|mile[s]?)/,*)

나에게 그것은 일치해야 할 것 같지만 그렇지 않습니다. 다음과 같이 제거 된 것조차 :

show me all cars

정규식으로 :

[]/show/[]/cars/[]

일치하지 않으므로 정규식을 올바르게 설정하지 않는쪽으로 기울게됩니다. TokensRegex의 한계에 대해 이해하지 못하는 것이 있거나 표현식을 올바르게 구성하지 않았습니까? 어떤 도움이라도 대단히 감사하겠습니다. 감사합니다!

staticFlow

내 문제에 대해 TokensRegex가 직접 필요하지 않은 것으로 나타났습니다. 제가 해결하려고했던 핵심은 구에서 숫자를 골라서 변환하는 것이었지만 CoreNLP의 NERClassifierCombiner를 사용하여 ouy를 고르고 대체하고 일반 정규식을 사용하여 업데이트 된 입력 구와 일치시킬 수 있다는 것을 깨달았습니다. 내가 한 작업의 예는 "15km 이내의 모든 자동차 표시"와 같은 구문의 경우 "15km 이내의 모든 자동차 표시"로 변환됩니다.

        Sentence sentence = new Sentence(eventName);
        String serializedClassifier = "english.muc.7class.distsim.crf.ser.gz";
        NERClassifierCombiner combiner = null;
        try {
            combiner = new NERClassifierCombiner(serializedClassifier);
        } catch (IOException e) {
            e.printStackTrace();
        }
        List<String> reconstructedEventTokens = new ArrayList<>();
        for (CoreLabel cl : combiner.classify(sentence.asCoreLabels())) {
            if(cl.ner() == KBPRelationExtractor.NERTag.NUMBER.name){
                reconstructedEventTokens.add(cl.get(CoreAnnotations.NumericCompositeValueAnnotation.class).toString());
            }else{
                reconstructedEventTokens.add(cl.originalText());
            }
        }
        String newEvent = String.join(" ",reconstructedEventTokens);
        System.out.println("matching phrase to check: "+newEvent);
        Pattern pattern = Pattern.compile(value);
        Matcher matcher = pattern.matcher(newEvent);

NER 툴킷을 찾기 위해 라이브러리를 좀 더 파헤 쳤지 만 지금은 매력적으로 작동합니다! 이것이 문구에서 숫자 또는 다른 엔티티를 찾으려고하는 다른 사람에게 도움이되기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Stanford Parser 또는 Stanford CoreNLP를 사용하여 명사구의 문법적 관계를 찾는 방법

분류에서Dev

Stanford CoreNLP TokensRegex의 일치 토큰에서 결과 데이터를 가져 오는 데 사용되는 Annotation 클래스는 무엇입니까?

분류에서Dev

토큰의 구문 오류,이 토큰 삭제-R.java

분류에서Dev

토큰의 구문 오류

분류에서Dev

Stanford CoreNLP 병합 토큰

분류에서Dev

토큰의 구문 오류, 잘못 배치 된 구문-이진 검색 방법의 오류

분류에서Dev

큰 말뭉치로 문서 분류를 위해 CoreNLP ColumnDataClassifier 사용

분류에서Dev

파일에서 데이터를 읽는 동안 예기치 않은 토큰 'newline'근처의 구문 오류

분류에서Dev

이 토큰 이후에 예상되는 토큰 variabledeclaratorid의 구문 오류

분류에서Dev

Android onCreate- 'Override'토큰의 구문 오류,이 토큰을 삭제합니다.

분류에서Dev

System.out.print ( ""); 토큰 "."의 구문 오류, @이 토큰 뒤에 예상 됨

분류에서Dev

오류 수정 방법 : 해결되지 않은 컴파일 문제 : 토큰 "rs"의 구문 오류

분류에서Dev

토큰 주위에 n 개의 단어를 가져 오기 위해 grep을 사용하는 구두점 문제

분류에서Dev

사용자 지정 지시문의 ng-repeat : 구문 오류 : '$ index'토큰이 예기치 않습니다.

분류에서Dev

If-Else 문이 작동하지 않음-예기치 않은 토큰 'fi'근처의 구문 오류

분류에서Dev

Stanford CoreNLP에서 특정 명사 구에 대한 상호 참조를 해결하는 방법

분류에서Dev

중첩 된 구분 기호 사이의 문자열 토큰 화

분류에서Dev

예기치 않은 토큰`( '근처의 구문 오류

분류에서Dev

예기치 않은 토큰`( '근처의 구문 오류

분류에서Dev

bash : 예기치 않은 토큰`( '근처의 구문 오류

분류에서Dev

bash : 예기치 않은 토큰`} '근처의 구문 오류

분류에서Dev

-bash : 예기치 않은 토큰`; '근처의 구문 오류

분류에서Dev

awk : 예기치 않은 토큰`( '근처의 구문 오류

분류에서Dev

예기치 않은 토큰`< '근처의 구문 오류

분류에서Dev

Bash : 예기치 않은 토큰`else '근처의 구문 오류

분류에서Dev

Bash : 예기치 않은 토큰`else '근처의 구문 오류

분류에서Dev

예기치 않은 토큰`do 근처의 구문 오류

분류에서Dev

bash : 예기치 않은 토큰 근처의 구문 오류

분류에서Dev

예기치 않은 토큰`} '근처의 구문 오류

Related 관련 기사

  1. 1

    Stanford Parser 또는 Stanford CoreNLP를 사용하여 명사구의 문법적 관계를 찾는 방법

  2. 2

    Stanford CoreNLP TokensRegex의 일치 토큰에서 결과 데이터를 가져 오는 데 사용되는 Annotation 클래스는 무엇입니까?

  3. 3

    토큰의 구문 오류,이 토큰 삭제-R.java

  4. 4

    토큰의 구문 오류

  5. 5

    Stanford CoreNLP 병합 토큰

  6. 6

    토큰의 구문 오류, 잘못 배치 된 구문-이진 검색 방법의 오류

  7. 7

    큰 말뭉치로 문서 분류를 위해 CoreNLP ColumnDataClassifier 사용

  8. 8

    파일에서 데이터를 읽는 동안 예기치 않은 토큰 'newline'근처의 구문 오류

  9. 9

    이 토큰 이후에 예상되는 토큰 variabledeclaratorid의 구문 오류

  10. 10

    Android onCreate- 'Override'토큰의 구문 오류,이 토큰을 삭제합니다.

  11. 11

    System.out.print ( ""); 토큰 "."의 구문 오류, @이 토큰 뒤에 예상 됨

  12. 12

    오류 수정 방법 : 해결되지 않은 컴파일 문제 : 토큰 "rs"의 구문 오류

  13. 13

    토큰 주위에 n 개의 단어를 가져 오기 위해 grep을 사용하는 구두점 문제

  14. 14

    사용자 지정 지시문의 ng-repeat : 구문 오류 : '$ index'토큰이 예기치 않습니다.

  15. 15

    If-Else 문이 작동하지 않음-예기치 않은 토큰 'fi'근처의 구문 오류

  16. 16

    Stanford CoreNLP에서 특정 명사 구에 대한 상호 참조를 해결하는 방법

  17. 17

    중첩 된 구분 기호 사이의 문자열 토큰 화

  18. 18

    예기치 않은 토큰`( '근처의 구문 오류

  19. 19

    예기치 않은 토큰`( '근처의 구문 오류

  20. 20

    bash : 예기치 않은 토큰`( '근처의 구문 오류

  21. 21

    bash : 예기치 않은 토큰`} '근처의 구문 오류

  22. 22

    -bash : 예기치 않은 토큰`; '근처의 구문 오류

  23. 23

    awk : 예기치 않은 토큰`( '근처의 구문 오류

  24. 24

    예기치 않은 토큰`< '근처의 구문 오류

  25. 25

    Bash : 예기치 않은 토큰`else '근처의 구문 오류

  26. 26

    Bash : 예기치 않은 토큰`else '근처의 구문 오류

  27. 27

    예기치 않은 토큰`do 근처의 구문 오류

  28. 28

    bash : 예기치 않은 토큰 근처의 구문 오류

  29. 29

    예기치 않은 토큰`} '근처의 구문 오류

뜨겁다태그

보관