트윗을 요약해 주는 집사를 만들었습니다【최대 피복 모델】

소개



이번에는 최대 피복 모델을 사용한 트윗의 요약 API를 만들었습니다. 키워드를 지정하면 최근의 화제를 요약해 가르쳐 주는 마치 집사 같은 API입니다. 예를 들어 "신경이 쓰이는 제품의 시장 목소리를 알고 싶다""자신의 회사 뉴스와 명성을 알고 싶다""지금 유행하고있는 FGO 관련 네타 트윗을 알고 싶다"등의 용도로 사용할 수 있습니다.



API 공개


  • 트윗 요약 컨시어지
  • 사용할 때까지의 순서나 해설은 이쪽
  • Java 샘플 코드는 이쪽
  • public class Api27TwitterSummarizeExample {
    
      static String ENDPOINT     = "https://api.apitore.com/api/27/twitter-summarize/get";
      static String ACCESS_TOKEN = "YOUR-ACCESS-TOKEN";
    
      public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();
        Map<String, String> params = new HashMap<String, String>();
        params.put("access_token", ACCESS_TOKEN);
        params.put("q", "Apitore");
        params.put("iter", "1");
        params.put("num", "3");
        String url = UrlFormatter.format(ENDPOINT, params);
    
        TwitterSummarizeResponseEntity response =
            restTemplate.getForObject(url, TwitterSummarizeResponseEntity.class, params);
    
        System.out.println(response.getLog());
        System.out.println(response.getTweets().get(0).getText());
        System.out.println(response.getTweets().get(0).getScore());
      }
    
    }
    

    문서 요약이란?



    Wikipedia 자동 요약의 항목이 도움이됩니다. 이번에는 「최대 피복 모델로 중요문(트윗)을 임의의 수만큼 선택한다」라고 하는 어프로치를 취했습니다. 최대 피복 모델에 의한 문장 선택형의 문서 요약을 매우 자세하게 설명하면 「전체의 문자 길이가 길이 M를 넘지 않도록, 중요한 단어를 많이 포함하는 문장을 N개 선택한다」라고 하는 것입니다. 일반적으로 성능 보증 탐욕법으로 계산합니다. 단어의 중요도는, 예를 들면 TF-IDF와 같은 것으로 계산해도 좋고, 독자적으로 중요도 사전을 만들어 참조하는 경우도 있습니다.

    알고리즘



    세세한 궁리는 생략합니다만, 대략은 이하의 흐름이 되고 있습니다.

  • 쉬운 트윗 수집 API에서 모든 키워드가 포함 된 트윗을 얻습니다.

  • 검은 글자 - 이파 c - 네오 gd에서 형태소 해석하고 내용어 (명사, 동사, 형용사, 형용동사)만을 대상으로 한다
  • 내용어의 bigram을 계산하는 내용어 bigram의 Document Frequency를 중요도로 한다
  • 최대 코팅 모델 + 성능 보증 탐욕법으로 중요한 문장 추출

  • 요약해보자



    임의의 키워드를 포함한 트윗 100건을 사용해 요약해 보았습니다. 우선은 「어떤 마술의 금서 목록」을 입력해 보겠습니다. 아무래도 디바인 게이트라는 소샤게에서 콜라보레이션 기획이 하고 있는 것 같네요. 패미통에서도 특집이 짜여진 것 같습니다.
      "tweets": [
        {
          "statusId": 819472977976660000,
          "text": "とある魔術の禁書目録コラボユニットの性能調整が行われました!!\n詳しくはこちら\nhttps://t.co/nCtI6L2lEB\n#ディバゲ https://t.co/euWj6SVOlU",
          "createdAt": 1484212557000,
          "userId": 1651752007,
          "userName": "ミスター☆ディバイン@ディバゲ公式",
          "userScreenName": "divine_gate",
          "userProfileImageURL": "http://pbs.twimg.com/profile_images/545168403653083137/tPjlbZBx_normal.png",
          "score": 15.556059143488126
        },
        {
          "statusId": 819379554334576600,
          "text": "【ディバゲ研究室】劇場版『とある魔術の禁書目録』コラボが1/13より復刻!新ユニットのステータス&スキルも判明 - ファミ通App https://t.co/i8B6GkYabA https://t.co/mmNxqtB0RR",
          "createdAt": 1484190283000,
          "userId": 5921162,
          "userName": "ファミ通.com",
          "userScreenName": "famitsu",
          "userProfileImageURL": "http://pbs.twimg.com/profile_images/378800000675754960/d98b55583c072a904463b4a625655c70_normal.png",
          "score": 13.692591672735654
        },
    

    이어 "가챠". 지금은 FGO의 가챠가 뜨거운 것 같네요!
      "tweets": [
        {
          "statusId": 819441067925782500,
          "text": "FGOはシステムから「こいつがいないとクリアできないよor他のプレイヤーに勝てないよ」って無言の圧力をかけられる事がないから本当に「ガチャは自己責任」っていう意味で良心的だと思う",
          "createdAt": 1484204949000,
          "userId": 113922292,
          "userName": "カボチャ@ティアマト鯖",
          "userScreenName": "Lantern_pumpkin",
          "userProfileImageURL": "http://pbs.twimg.com/profile_images/787644896349872128/67tAY3Cp_normal.jpg",
          "score": 21.51741612946915
        },
        {
          "statusId": 819164551534870500,
          "text": "ガチャ回すの悩んでる人向けにJust do itの嘘字幕でっち上げておいたんで置いておきますね https://t.co/YrKBV4CmQp",
          "createdAt": 1484139023000,
          "userId": 3002869106,
          "userName": "祢架丸(ねかまる)",
          "userScreenName": "NakedAmarl",
          "userProfileImageURL": "http://pbs.twimg.com/profile_images/732055255278452736/gFzwi9NU_normal.jpg",
          "score": 12.289830977543446
        },
    

    마지막은 성실한 것을 기대해 「아베 총리」. 연꽃씨의 발언이나 필리핀에서의 1조엔 지원이 화제인 것 같습니다. 필리핀에 1조엔 지원하는 것은 몰랐습니다. 흠흠.
      "tweets": [
        {
          "statusId": 819510275959181300,
          "text": "民進・蓮舫「安倍晋三首相と意識共有できていない」~ネットの反応「有権者と意識を共有できてない蓮舫さん大いに語る」「党内の意識統一できない人が言うと面白いよね」\nhttps://t.co/oBChp3nIzL",
          "createdAt": 1484221450000,
          "userId": 3147651630,
          "userName": "アノニマス ポスト",
          "userScreenName": "anonymous201504",
          "userProfileImageURL": "http://pbs.twimg.com/profile_images/713181990690775040/BWrea93U_normal.jpg",
          "score": 26.90972898141721
        },
        {
          "statusId": 819496986638315500,
          "text": "TBS◆日比首脳会談で安倍首相、1兆円規模の支援表明 https://t.co/eabtk7unzH 「フィリピンのさらなる発展のため、ODAと民間投資をあわせ、今後5年間で1兆円規模のビジネス、機会を創出します」(安倍首相)※今年もバラマキスタート。",
          "createdAt": 1484218281000,
          "userId": 57184966,
          "userName": "deepthroat",
          "userScreenName": "gloomynews",
          "userProfileImageURL": "http://pbs.twimg.com/profile_images/315728613/deepthroat_normal.gif",
          "score": 23.325985203733698
        },
    

    결론



    트윗 요약 서비스를 좀 찾았지만 찾을 수 없습니다. 상당히 편리하다고 생각합니다. API 게시 그러므로 사용해 보세요. 「신제품이 나왔을 때」나 「소샤게로 새로운 캐릭터가 나왔을 때」 「자사의 명성을 알고 싶다」 「시사 문제를 알고 싶다」 「가습기의 추천을 알고 싶다」등의 용도로 유용하다고 생각 합니다.

    좋은 웹페이지 즐겨찾기