COTOHA API를 사용하여 사람의 보고서를 성공적으로 팩하는 앱 만들기

도내의 대학에 다니는 사람입니다. 대학에 입학한 지 1년, 프로그래밍을 시작한 지 7개월이 지나고 있습니다. 평소에는 친구와 앱을 만들거나 기계 학습 대회에 참가하고 있습니다.
어제 【Qiita x COTOHA API 선물 기획】이라는 이벤트를 알았습니다.
Mac을 원하기 때문에 입상을 목표로 첫 기사를 씁니다. (오늘은 마감일이지만 ... )

대학 보고서가 귀찮다.



대학에서는 많은 보고서를 부과합니다. 이것은 매우 고통스러운 이벤트입니다.

잘 빠질 수 없습니까?



편리한 방법은 사람의 보고서를 팩하는 것입니다. 그러나 한마디 한마디 팩하면 유석에 들러요. 그래서 보고서의 내용을 그대로 표현만 바꿀 수 없는가 라고 생각했습니다.

소재



이번에는 아래와 같은 문장(지난 달 쓴 리포트의 일부)을 팩하자고 생각합니다.'また、厚生労働省の「精神疾患による患者数」によると精神疾患の患者数は年々増加しており平成29年には400万人を超えた。この増加は今後も続くと思われており、このことからも50年後の都市において休息の場としての公園が必要であることがわかる。また、人口減少に加え、高齢化が顕著に進んでいることがわかる。また、国立社会保障・人口問題研究所の『日本の地域別将来推計人口(平成30(2018)年推計)』によると、今後、65歳未満の人口はすべての都道府県で減少する。'
박하고 싶을 정도로 능숙한 문장이 아니네요... 「또」가 많고...

규칙


  • 「」안의 말은 바꾸지 않는다. (책이나 홈페이지의 이름이므로)
  • 지명이나 인물명, 조직명은 바꾸지 않는다.
  • 숫자는 변경되지 않습니다.

  • 그런 로직 만들기



    동의어 사전이나 GCP 등을 사용하여 원래의 표현을 조금씩 따릅니다.
    그 결과가 이것입니다.'厚生労働省の「精神疾患患者」によると、精神疾患患者の数は年々増加しており、2017年には400万人を超えています。この増加は今後も続くと予想され、50年後の都市には休息の場所が必要です。さらに、人口が減少しており、人口が著しく高齢化していることがわかります。全国人口社会保障研究所「日本の地域別推定人口(2018年推定)」によると、65歳未満の人口は将来的にすべての都道府県で減少します。'
    곳곳에 표현이 바뀌고 있습니다.
    세 번째 규칙은 지켜지고 있습니다만, 「국립 사회 보장·인구 문제 연구소」가 「전국 인구 사회 보장 연구소」로 바뀌어 버렸습니다. 인물명이나 조직명에 대응할 수 없습니다.

    COTOHA API를 사용합니다.



    만을 가지고 COTOHA API의 등장입니다.
    COTOHA API 링크
    COTOHA API는 “구문 해석, 조응 해석, 키워드 추출, 음성 인식, 요약 등 다양한 자연 언어 처리·음성 처리 API를 제공하고 있는 서비스입니다. NTT 그룹의 40년에 걸친 연구 성과인 일본어 사전 와 단어를 3000종 이상의 의미성 분류하는 기술 등을 활용하여 고급 분석을 API로 간편하게 이용할 수 있습니다.
    이 뛰어난 API 중에서 이번에는 고유 표현 추출 API를 사용하여 인물 이름과 조직 이름을 결정합니다.

    COTOHA API의 무료 프레임에 등록



    여기에서 쉽게 등록할 수 있습니다.
    등록한 후 여기에서 API BASE URL, CLIENT ID, CLIENT secret을 확인합니다.

    get_token.py
    data = {
        "grantType": "client_credentials",
        "clientId": "Your CLIENT ID",
        "clientSecret": "Your CLIENT secret"
        }
    str_json = json.dumps(data)
    
    url = "https://api.ce-cotoha.com/v1/oauth/accesstokens"
    headers={
        "Content-Type": "application/json"
        }
    
    
    result=requests.post(url,headers=headers,data=str_json)
    print(result.text)
    

    이제 액세스 토큰을 확인할 수 있습니다.

    get_koyu.py
    def get_koyu_(text, token):
        data = {
        "sentence":text,
        "type": "default"
        }
        headers = {
            "Content-Type":"application/json",
            "Authorization":"Bearer " + token
        }
    
        str_json = json.dumps(data)
    
        url = "https://api.ce-cotoha.com/api/dev/nlp/v1/ne"
        rr=requests.post(url,headers=headers,data=str_json)
        result = json.loads(rr.text)["result"]
    

    위의 코드에서 문장의 고유 표현을 추출할 수 있습니다.[{'begin_pos': 3, 'end_pos': 8, 'form': '厚生労働省', 'std_form': '厚生労働省', 'class': 'ORG', 'extended_class': '', 'source': 'basic'}, {'begin_pos': 42, 'end_pos': 47, 'form': '平成29年', 'std_form': '平成29年', 'class': 'DAT', 'extended_class': '', 'source': 'basic'}, {'begin_pos': 84, 'end_pos': 88, 'form': '50年後', 'std_form': '50年後', 'class': 'DAT', 'extended_class': '', 'source': 'basic'}, {'begin_pos': 156, 'end_pos': 170, 'form': '国立社会保障・人口問題研究所', 'std_form': '国立社会保障・人口問題研究所', 'class': 'ORG', 'extended_class': '', 'source': 'basic'},...지명, 인명, 조직명등의 카테고리가 접해져 있으므로, 이것들을 의지해 지명, 인명, 조직명을 판정합니다.

    그리고는 이러한 고유 표현을 바꾸지 않게 코드를 재기록합니다.

    완성



    박하기 전'また、厚生労働省の「精神疾患による患者数」によると精神疾患の患者数は年々増加しており平成29年には400万人を超えた。この増加は今後も続くと思われており、このことからも50年後の都市において休息の場としての公園が必要であることがわかる。また、人口減少に加え、高齢化が顕著に進んでいることがわかる。また、国立社会保障・人口問題研究所の『日本の地域別将来推計人口(平成30(2018)年推計)』によると、今後、65歳未満の人口はすべての都道府県で減少する。'

    팩 후'厚生労働省の「精神疾患による患者数」によると、精神疾患患者数は年々増加しており、2017年には400万人を超えている。この増加は今後も続くと予想され、50年後の都市では休息場所としての公園が必要であることを示唆している。また、人口が減少し、高齢化が著しく進んでいるのも分かる。国立社会保障・人口問題研究所の『日本の地域別将来推計人口(平成30(2018)」によると、全県で65歳未満の人口が減少する。'
    『』 안의 말이나, 조직명은 그대로, 표현만이 바뀌고 있습니다. 미묘한 부분도 있습니다만, 우선 좋다고 합니다.

    실제로 완성된 앱이 여기입니다.

    좋은 웹페이지 즐겨찾기