2010-08-08 2 views
11

저는 과거, 현재, 미래의 시제로 영어 텍스트 카운트 동사구가 주어진 길을 찾고 있습니다. 지금은 NLTK을 사용하고 POS (품사) 태깅을 한 다음 과거 시제를 구하기 위해 'VBD'라고 계산합니다. 이것은 충분히 정확하지 않습니다. 그래서 나는 더 멀리 가서 chunking을 사용하고, 특정한 긴장 패턴에 대해 VP-chunk를 분석 할 필요가 있다고 봅니다. 거기에 기존의 것이 있습니까? 도움이 될만한 추가 읽기가 있습니까? NLTK book은 주로 NP 청크에 중점을두고 있으며 VP 청크에 대한 정보는 거의 찾을 수 없습니다.NLTK를 사용하여 영어 동사 시제를 감지하십시오.

+0

논리에 결함이 있습니다. chunker가 NP를 감지 할 수 있으면 VP를 감지 할 수 있어야합니다. –

+0

물론 나는 다른 VP를 분석하는 데 주로 관심이 있습니다. 다른 시제 간의 차이점을 만드는 방법입니다. –

답변

9

정답은 사용하려는 청크에 따라 다르지만 목록 내포물은 당신을 먼 길로 데려 갈 것입니다. 이것은 존재하지 않는 chunker를 사용하는 동사구의 수를 얻습니다.

len([phrase for phrase in nltk.Chunker(sentence) if phrase[1] == 'VP']) 

시제 수를 감지하기 위해 좀 더 세밀한 방법을 사용할 수 있습니다.

+0

포인터를 주셔서 감사합니다. 그게 제가 사용할 것입니다. 다음 질문은 긴장된 패턴을 발견 할 수있는 것이 있는지 아닌지입니다. 각 부사장의 경우 시제가 무엇인지 알고 싶습니다. –

+2

실제로이 방법으로 문제를 해결할 수 있었으므로 허용 된 답변으로 태그를 지정했습니다. 다음 기사가 정말 도움이됩니다. http://streamhacker.com/2009/02/23/chunk-extraction-with-nltk/ –

+0

안녕하세요. –

1

Berkeley Parser 또는 Stanford Parser 중 하나를 사용하여이 작업을 수행 할 수 있습니다. 하지만 파이썬 인터페이스가 있을지 모르겠습니다.

+0

고마워요, 이것은 옵션 일 수도 있습니다. 그러나 NLTK를 이미 많이 사용하고 있기 때문에 전환하는 작업이 많이 필요할 수도 있습니다. 그러나 볼 것이다. –

+1

NLTK에는 Stanford Parser 용 인터페이스가 있습니다. 다음과 같이 사용할 수 있습니다 :'tagger = nltk.tag.stanford.POSTagger ('models/german-fast.tagger', 'stanford-postagger.jar')'문자열을 UTF-8로 먼저 인코딩해야 할 수도 있습니다 (적어도 독일 모델의 경우). –

+2

버클리의 철자가 잘못되었습니다. 대답에 대한 오타 수정을 제안 할 수는 없습니다. – Streeter

관련 문제