2015-01-14 3 views
0

에 특징 추출기를 추가, 마지막 단계는 다음과 같습니다새로운 추출기를 추가, <a href="http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/ie/NERFeatureFactory.html" rel="nofollow">http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/ie/NERFeatureFactory.html</a>에서 스탠포드 NER

가이 기능을 NERFeatureFactory에 코드를 추가합니다. 먼저 해당 클래스에 속한 클래스()를 결정합니다. 현재 및 이전 클래스 다음 featuresCpC 등

모두 우리 만 수집, 같은 기능을하는 문자열을 추가해야 할 경우에만 현재 클래스, 당신은 featuresC 코드에 특징 추출기를 추가 as : featuresCpCnC.add(getWord(c) + "-PNSEQW");, 그리고 StanfordNER가 문자열을 실제 기능으로 구문 분석합니까? 이 경우 기능 문자열에서 특정 클래스/필드 (예 : 제목 및 작성자)를 어떻게 지정합니까? 나는 (exportFeatures 또는 printFeatures 사용) 텍스트 파일의 기능을 덤프 때 내가 (class[t-1]==DateField)*(class[t]==DateField)*(word[t-1]=="June")

+0

답변을 찾은 것 같습니다. 문자열을 추가하면 올바르게 새로운 피쳐 추출기를 추가 할 수 있습니다. Stanford NER가 가능한 모든 특정 클래스를 가진 피쳐가 생성 될 것이기 때문에 제네릭 클래스에만 기능이있는 이유는 그것들에 대한 가중치가 순방향 역방향 알고리즘을 사용하여 학습됩니다. –

답변

0

을 의미 June-DateField-DateField-PSEQW|CpC 같은 것을 원하는 동안, 난 단지, June-PSEQW|CpC 같은 일반적인 클래스와 기능을 찾을 나는이 예상되는 동작을 생각 - 성능이 있습니다 교육이 예상대로 작동하지 않는다는 것을 나타내는 문제가 있습니까?

가장 일반적인 경우에, featurizer f(x,y)은 입력 x과 출력 y을 취해 그 특정 쌍에 대한 특징 벡터를 구성합니다. 그러나 많은 NLP 응용 프로그램에서 기능은 실제로 입력 x에만 의존하기 때문에 우리가 노출하는 featurizer 인터페이스는 단지 f(x)이며 백엔드 (see, e.g., page 10 on "Block Feature Vectors")의 출력 클래스와 기능을 암시 적으로 조인합니다. 이 경우 f(x) 만 인쇄하고 f(x,y)은 인쇄하지 않는 것이 합리적입니다.

+0

감사. 더 자세히 설명하기 위해 CRF는 모든 가능한 f (x, y)에 대한 가중치를 계산해야한다고 생각합니다. 따라서 가중치를 지정하지 않으면 인쇄 동작이 적합합니다. 그러나 때로는 중요한 가중치가있는 f (x, y) 또는 최상위 가중치가있는 f (x, y) 만 출력하므로 일부 유용한 패턴을 발견하는 데 도움이됩니다. 현재 API가이를 지원하지 않는 것 같습니다. –