논문 구현 (특허 문서에서 부트 스트랩 기술을 사용하여 과제 및 효과 표현 쌍 추출) - 준비

언덕의 기법 라고 하는 것을 옛날 알고, 좋은 방법이구나라고 생각하면서, 이미 5년 이상 경과.
「특허문서로부터의 부트스트랩 수법을 이용한 과제·효과 표현쌍의 추출」이라고도.

현재 다소는 프로그래밍 할 수 있게 되어, 구현하고 싶다고 생각해, 우선 논문을 소화하는 것에.
덧붙여서 사카지라는 것은 사카치 선생님 한 번도 만난 적은 없지만 관계자를 만난 적이 있습니다.

20200107 추가:
계속

1. 목적


  • 특허문장은 길기 때문에 모두 읽는 것이 힘들다.
  • 하지만, 특허는 어쩌면, 「과제」를 해결하기 위한 「구체적인 수단」에 의해 실현되는 「효과」를 쓴 것.
  • 이 과제와 효과를 효율적으로 문서로부터 추출할 수 있으면, 정보 수집이 편해진다.
    '과제'와 '효과'를 효율적으로 추출하고 싶다.

  • 2.논문의 내용



    이하 「아마 이렇게 될 것이다」라고 하는 결과.
    크로스 부트 스트랩이라고 하는 대로 크로스 한다.
    무엇을 교차하는가?
  • 「과제 단서 표현」(과제 표현과 효과 표현 사이에 나타나, 과제 표현의 직후에 출현하는 「할 수 있어」등의 단서 표현)로부터 얻어진 효과 관련의 표현
    그리고
  • "효과 단서 표현"(문말에 나타나 효과 표현의 끝을 구성하는 "할 수있다."등의 단서 표현)에서 얻은 과제 관련 표현

  • 두 가지를 오가는 (서로 교차하여 추출), 고구마 식에 과제 관련 표현과 효과 관련 표현을 얻는다. (라고 생각된다)

    그림은 논문에서 참조



    이하 정리


    표현
    패턴
    동사/명사 후보
    표현 추출 패턴


    과제 단서 표현
    .*(격조사).*(과제 단서 표현).*(효과 단서 표현)
    과제동사=왼쪽의 격조사
    과제 단서 표현 후보=.*(과제 동사).*, .*(효과 단서 표현)의 「.*,」 부분

    효과 단서 표현①=「일」형
    .*(과제 단서 표현).*(격조사).*(효과 단서 표현)
    효과동사=왼쪽의 격조사
    .*(과제 단서 표현).*(효과 동사).*. ".*."부분

    효과 단서 표현②=동사형
    .* (과제 단서 표현). * (명사) (효과 단서 표현)
    효과 명사 = 왼쪽의 명사
    .*(과제 단서 표현)*(효과 명사).*. 의 ".*."부분


    「과제/효과」와 「단서 표현」으로 머리가 곤란해져 오지만,
    어떻게든 이해.

    스코어의 계산식은 각각 미묘하게 다르지만, 일례로서 과제 단서 표현의 스코어 계산식.



    실험 결과를 보면, 루프수 3에서 스코어의 임계치 α=0.5로 성능이 좋은 것 같다.

    3. 도중까지 구현.



    수식을 만들고 있는 동안에 막다른다. 특히 품사에 근거한 판정과 단어 자체에 근거한 판정이 섞여있는 동안
    자신이 무엇을 하고 싶었는지 모르게 된다. 어떻게든 타개하고 싶다. 사전 사용할 수 있어 어떻게든 상당히 그렇게 생각한다.
    import math
    import re
    def calc_score(list_S,listE,extract_list,texts):
        return H(list_S,list_E,extract_list,texts)/(math.log2(len(list_S)*len(list_E))+1)
    
    def H(list_S,list_E,extract_list,texts):
        score = 0
        for i in range(0,len(list_S)):
            for j in range(0,len(list_E)):
                score +=  -P(list_S[i],list_E[j],extract_list,texts)* 
        math.log2(P(list_S[i],list_E[j],extract_list,texts))
        return score
    
    def P(x,y,extract_list,texts):
        #x,yはともに候補の集合(リスト)
        return co_ocu(x,y,texts)/len(extract_list)  # numN=抽出対象の表現の数
    
    def co_ocu(x,y,texts):
        count_co_ocu = 0
        for text in texts:
            if text.find(x) and text.find(y):
                count_co_ocu += 1
            else:
                pass
        return count_co_ocu
    
    
    def get_effect(sentence,S,E): 
        re.find(*.(格助詞).*S.*E。)  #あれれれ
    

    좋은 웹페이지 즐겨찾기