"진행 어떻습니까"프로그램에서 형태소 해석 엔진 MeCab 적용

진원은 이쪽 @esehara@github씨의 기사.
  • 「진척·어떻게・입니다・인가」를 랜덤하게 표시해 「진척 어떻습니까」가 완성되면 부추어 오는 Clojure

  • 파생

  • 「진척·어떻게・입니다・인가」를 랜덤하게 표시해 「진척 어떻습니까」가 완성되면 부추어 오는 프로그램 C++
  • "진척·어떻게·입니다·인가"를 Haskell로 써 보았다
  • golang의 진행 어떻습니까?
  • Elixir - 진행 상황은 어떻습니까?
  • 진행 어때요? 붐?
  • 진행 어떻습니까? 붐에 파이썬으로 걸려
  • 진행 어떨까요?
  • 진행 어때요? 붐???
  • "진척·어떻게·입니다·인가"를 PHP로 써 보았다
  • bat - 「진척·어떻게·입니다·인가」를 랜덤하게 표시해 「진척 어떻습니까」가 완성되면 부추어 오는 배치
  • 「진척·어떻게・입니다・인가」를 랜덤하게 표시해 「진척 어떻습니까」가 완성되면 부추어 오는 프로그램(C#으로 도전)
  • 「진척·어떻게・입니다・인가」를 랜덤하게 표시해 「진척 어떻습니까」가 완성되면 부추어 오는 프로그램(C#/LINQ)
  • 한여름 밤의 음란 - 1145148101919 붐에 ShellScript로 평범하게 도전
  • 위험 쉘 예술 - 격렬한 진행 확인 폭풍으로 머신 리소스를 빠르게 찢는 원라이너

  • 개요



    글쎄, 늦었어.

    종래 제안된 「진척 어떻습니까」계 프로그램은 모두, 소재에 취급하는 문장의 형태소를 인력으로 나누어, 소스 코드에 기입할 필요가 있습니다.

    한 문장의 형태소를 기계적으로 추출할 수 있으면 소스 코드를 변경하지 않고 임의의 문장에서 이 프로그램을 이용할 수 있습니다. 이것을 가능하게 하는 형태소 해석 오픈 소스 엔진으로서 MeCab가 있습니다. MeCab을 적용하면 좋아하는 문장으로 "진행 어떻습니까"프로그램을 부담없이 실행할 수 있습니다.

    구현



    Ruby에는 MeCab 바인딩의 natto gem가 있으므로 이것을 이용합니다. 여기 의 코멘트를 참고로.

    dou.rb
    require "natto"
    class Natto::MeCab
      def morphemes(sentence_string)
        # 入力文章の形態素の配列を返却。 "進捗どうですか" => ["進捗","どう","です","か"]
        parse(sentence_string).each_line.map{|s| s[/^(.*?)\t/,1] }.compact
      end
    end
    
    input = ARGV[0] || "進捗どうですか"
    dic   = Natto::MeCab.new.morphemes(input)
    str   = ''
    
    print dic.sample.tap{|c| str << c } until str[-(input.size)..-1] == input
    puts "!!!!"
    puts
    

    샘플





    여기에서 이상입니다.

    참고


  • 루비의 mecab 바인딩 나토 사용
  • 좋은 웹페이지 즐겨찾기