igo-ruby와 jubatus를 사용해 보세요~ 문장의 해석편~
총결산
• 도입이 좀 까다롭다
• python에서 MeCab/scipy를 사용하거나 julby에서 Mahout을 사용하는 것이 합리적일 수 있습니다
장편문장 무겁고 고통스럽다
· 하지만 여러분들의 감정이 고조되면 저는 매우 기쁠 것입니다
참조 페이지 목록
일단 넣으면 넣는다.(igo에서 행렬 모델로서의 글을 특이치로 분해하고 k-부근법으로 채택하기를 희망함)
빠른 시작
wget 대신 curl-o로 해봤는데 잘 안 됐어요.
igo의 사전을 제작하여igo-ruby로 형태소를 분석하다
결과, 수동으로 사전 다운로드 및 만들기
Java 형태 분석 엔진 "Igo" 시도
생성 방법의 매개 변수가 포맷되었습니다
일본어로 pry.
가장 적합한 곳
형태소 해석(문장의 적절한 분해와 어류 분리)을 위해서는'사전'이 필요하다.
나는 그 사전을 다운로드하고 설치하는 데 많은 시간을 썼다.
igo ver0.4.5
다운로드 후
MeCab IPA 사전
다운로드tar xzvf mecab-ipadic-2.7.0-20070801.tar.gz
사전의 데이터 파일을 동결해제합니다.
(왠지 *.tar.tar.gz
이름이 이상해.)
gz지만 gunzip을 사용할 필요가 없을 것 같습니다.
이 디렉터리는 해동된 후에 net
생성될 것이라고 생각합니다.java -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP
사전을 만든 후 ipadic
라는 디렉터리에 많은 것들이 포함되어 있습니다.
나는 이것을 Rails 프로젝트의 assets 바로 아래에 놓았다.
그리고 pry로 해보세요.
igo-parse-test.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
mes = ARGV.join(' ') unless ARGV.empty?
mes = "引数にparseしたい文章を入れて起動してね" unless mes
tagger = Igo::Tagger.new('./app/asset/ipadic')
puts tagger.wakati(mes)
tagger.parse(mes).each{|i|
puts "#{i.surface} #{i.feature} #{i.start}"
}
사용해 보려고 하는데 pry는 일본어를 사용할 수 없습니다.
ruby2.0.0p353을 마운트 해제하면 루비게이지의 extension-appi-version 방법이 좋지 않아서 루비2에 빠집니다.0.0p247을 긴급 기용하다.
pry 안 써도 돼요.
home_controller.rb
class HomeController < ApplicationController
MES = "兄さん、兄さんが有限実行の志士なのはわかりましたから、5日分の牛肉やら白菜やらまとめ買いしてくるの、止して下さい…「こんなにすき焼きの材料買って…お餅は
何時食べるのですか…」「餅をすき焼きの中に入れればよい」兄さんのすき焼きに寄せる万能感、どこ から来てるの"
def index
igo MES
end
private
def igo arg
mes = arg unless arg.empty?
mes = "引数にparseしたい文章を入れて起動してね" unless mes
tagger = Igo::Tagger.new(File.join("#{Rails.root}", "app", "assets", "ipadic"))
@wakati = tagger.wakati(mes)
@igo = tagger.parse(mes)
end
end
~/home/index.html.erb
<h1>Home#index</h1>
<%= @wakati %>
<% @igo.each do |i| %>
<%= "#{i.surface} #{i.feature} #{i.start}" %>
<% end %>
이렇게 하면...
글쓰기와 형태소 분석을 잘 구분할 수 있네요.
다음
형태소 분석 입력 데이터
・ 결과에 대한 행렬 모델링
・행렬을 특이값으로 분해하고 축소
• 축소 행렬의 임의 열의 여현 유사도 계산
주바투스로 근처를 완성할 수 있었으면 좋겠어요.할 수 있을지 모르겠어요.
그럼 안녕히 계세요.
추기
임의의 입력을 받아서 예쁘게 표시할 수 있습니다.
~home/index.html.erb
<h1>Home#index</h1>
<h2>解析文を入力してください</h2>
<%= simple_form_for :igo_form do |f| %>
<%= f.error_notification %>
<%= f.input :text, as: :text %>
<div class="form-actions">
<%= f.button :submit, class: 'btn-danger btn-large' %>
</div>
<% end %>
<h2>入力</h2>
<p><%= @mes %></p>
<% if @igo %>
<h2>分かち書き</h2>
<p><%= @wakati %></p>
<h2>形態素解析</h2>
<table class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th>形態素の表層形</th>
<th>形態素の素性</th>
<th>テキスト内での形態素の出現開始位置</th>
</tr>
</thead>
<tbody>
<% @igo.each do |i| %>
<tr>
<td><%= "#{i.surface}" %></td>
<td><%= "#{i.feature}" %></td>
<td><%= "#{i.start}" %></td>
</tr>
<% end %>
</tbody>
</table>
<% end %>
home_controller.rb
class HomeController < ApplicationController
def index
igo params[:igo_form][:text].gsub(/(\r\n|\r|\n)/, "") if params[:igo_form]
end
private
def igo arg
@mes = arg.present? ? arg : "引数にparseしたい文章を入れて起動してね"
tagger = Igo::Tagger.new(File.join("#{Rails.root}", "app", "assets", "ipadic"))
@wakati = tagger.wakati(@mes)
@igo = tagger.parse(@mes)
end
end
igo_form.rb
class IgoForm < ActiveRecord::Base
extend ActiveModel::Naming
include ActiveModel::Conversion
attr_accessor :text
def initialize(attributes = {})
self.attributes = attributes
end
def attributes=(attributes = {})
if attributes
attributes.each do |name, value|
send "#{name}=", value
end
end
end
def attributes
Hash[instance_variable_names.map{|v| [v[1..-1], instance_variable_get(v)]}]
end
end
이렇게 된 느낌.
MeCab보다 방법이 적고 출력 형식도 적지만, 지금은 크게 신경 쓸 정도는 아닌 것 같다.
좀 서툴지만 참고가 됐으면 좋겠어요
Reference
이 문제에 관하여(igo-ruby와 jubatus를 사용해 보세요~ 문장의 해석편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sgtn/items/e5abc622cfee30f2e763
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
일단 넣으면 넣는다.(igo에서 행렬 모델로서의 글을 특이치로 분해하고 k-부근법으로 채택하기를 희망함)
빠른 시작
wget 대신 curl-o로 해봤는데 잘 안 됐어요.
igo의 사전을 제작하여igo-ruby로 형태소를 분석하다
결과, 수동으로 사전 다운로드 및 만들기
Java 형태 분석 엔진 "Igo" 시도
생성 방법의 매개 변수가 포맷되었습니다
일본어로 pry.
가장 적합한 곳
형태소 해석(문장의 적절한 분해와 어류 분리)을 위해서는'사전'이 필요하다.
나는 그 사전을 다운로드하고 설치하는 데 많은 시간을 썼다.
igo ver0.4.5
다운로드 후
MeCab IPA 사전
다운로드tar xzvf mecab-ipadic-2.7.0-20070801.tar.gz
사전의 데이터 파일을 동결해제합니다.
(왠지 *.tar.tar.gz
이름이 이상해.)
gz지만 gunzip을 사용할 필요가 없을 것 같습니다.
이 디렉터리는 해동된 후에 net
생성될 것이라고 생각합니다.java -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP
사전을 만든 후 ipadic
라는 디렉터리에 많은 것들이 포함되어 있습니다.
나는 이것을 Rails 프로젝트의 assets 바로 아래에 놓았다.
그리고 pry로 해보세요.
igo-parse-test.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
mes = ARGV.join(' ') unless ARGV.empty?
mes = "引数にparseしたい文章を入れて起動してね" unless mes
tagger = Igo::Tagger.new('./app/asset/ipadic')
puts tagger.wakati(mes)
tagger.parse(mes).each{|i|
puts "#{i.surface} #{i.feature} #{i.start}"
}
사용해 보려고 하는데 pry는 일본어를 사용할 수 없습니다.
ruby2.0.0p353을 마운트 해제하면 루비게이지의 extension-appi-version 방법이 좋지 않아서 루비2에 빠집니다.0.0p247을 긴급 기용하다.
pry 안 써도 돼요.
home_controller.rb
class HomeController < ApplicationController
MES = "兄さん、兄さんが有限実行の志士なのはわかりましたから、5日分の牛肉やら白菜やらまとめ買いしてくるの、止して下さい…「こんなにすき焼きの材料買って…お餅は
何時食べるのですか…」「餅をすき焼きの中に入れればよい」兄さんのすき焼きに寄せる万能感、どこ から来てるの"
def index
igo MES
end
private
def igo arg
mes = arg unless arg.empty?
mes = "引数にparseしたい文章を入れて起動してね" unless mes
tagger = Igo::Tagger.new(File.join("#{Rails.root}", "app", "assets", "ipadic"))
@wakati = tagger.wakati(mes)
@igo = tagger.parse(mes)
end
end
~/home/index.html.erb
<h1>Home#index</h1>
<%= @wakati %>
<% @igo.each do |i| %>
<%= "#{i.surface} #{i.feature} #{i.start}" %>
<% end %>
이렇게 하면...
글쓰기와 형태소 분석을 잘 구분할 수 있네요.
다음
형태소 분석 입력 데이터
・ 결과에 대한 행렬 모델링
・행렬을 특이값으로 분해하고 축소
• 축소 행렬의 임의 열의 여현 유사도 계산
주바투스로 근처를 완성할 수 있었으면 좋겠어요.할 수 있을지 모르겠어요.
그럼 안녕히 계세요.
추기
임의의 입력을 받아서 예쁘게 표시할 수 있습니다.
~home/index.html.erb
<h1>Home#index</h1>
<h2>解析文を入力してください</h2>
<%= simple_form_for :igo_form do |f| %>
<%= f.error_notification %>
<%= f.input :text, as: :text %>
<div class="form-actions">
<%= f.button :submit, class: 'btn-danger btn-large' %>
</div>
<% end %>
<h2>入力</h2>
<p><%= @mes %></p>
<% if @igo %>
<h2>分かち書き</h2>
<p><%= @wakati %></p>
<h2>形態素解析</h2>
<table class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th>形態素の表層形</th>
<th>形態素の素性</th>
<th>テキスト内での形態素の出現開始位置</th>
</tr>
</thead>
<tbody>
<% @igo.each do |i| %>
<tr>
<td><%= "#{i.surface}" %></td>
<td><%= "#{i.feature}" %></td>
<td><%= "#{i.start}" %></td>
</tr>
<% end %>
</tbody>
</table>
<% end %>
home_controller.rb
class HomeController < ApplicationController
def index
igo params[:igo_form][:text].gsub(/(\r\n|\r|\n)/, "") if params[:igo_form]
end
private
def igo arg
@mes = arg.present? ? arg : "引数にparseしたい文章を入れて起動してね"
tagger = Igo::Tagger.new(File.join("#{Rails.root}", "app", "assets", "ipadic"))
@wakati = tagger.wakati(@mes)
@igo = tagger.parse(@mes)
end
end
igo_form.rb
class IgoForm < ActiveRecord::Base
extend ActiveModel::Naming
include ActiveModel::Conversion
attr_accessor :text
def initialize(attributes = {})
self.attributes = attributes
end
def attributes=(attributes = {})
if attributes
attributes.each do |name, value|
send "#{name}=", value
end
end
end
def attributes
Hash[instance_variable_names.map{|v| [v[1..-1], instance_variable_get(v)]}]
end
end
이렇게 된 느낌.
MeCab보다 방법이 적고 출력 형식도 적지만, 지금은 크게 신경 쓸 정도는 아닌 것 같다.
좀 서툴지만 참고가 됐으면 좋겠어요
Reference
이 문제에 관하여(igo-ruby와 jubatus를 사용해 보세요~ 문장의 해석편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sgtn/items/e5abc622cfee30f2e763
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
mes = ARGV.join(' ') unless ARGV.empty?
mes = "引数にparseしたい文章を入れて起動してね" unless mes
tagger = Igo::Tagger.new('./app/asset/ipadic')
puts tagger.wakati(mes)
tagger.parse(mes).each{|i|
puts "#{i.surface} #{i.feature} #{i.start}"
}
class HomeController < ApplicationController
MES = "兄さん、兄さんが有限実行の志士なのはわかりましたから、5日分の牛肉やら白菜やらまとめ買いしてくるの、止して下さい…「こんなにすき焼きの材料買って…お餅は
何時食べるのですか…」「餅をすき焼きの中に入れればよい」兄さんのすき焼きに寄せる万能感、どこ から来てるの"
def index
igo MES
end
private
def igo arg
mes = arg unless arg.empty?
mes = "引数にparseしたい文章を入れて起動してね" unless mes
tagger = Igo::Tagger.new(File.join("#{Rails.root}", "app", "assets", "ipadic"))
@wakati = tagger.wakati(mes)
@igo = tagger.parse(mes)
end
end
<h1>Home#index</h1>
<%= @wakati %>
<% @igo.each do |i| %>
<%= "#{i.surface} #{i.feature} #{i.start}" %>
<% end %>
임의의 입력을 받아서 예쁘게 표시할 수 있습니다.
~home/index.html.erb
<h1>Home#index</h1>
<h2>解析文を入力してください</h2>
<%= simple_form_for :igo_form do |f| %>
<%= f.error_notification %>
<%= f.input :text, as: :text %>
<div class="form-actions">
<%= f.button :submit, class: 'btn-danger btn-large' %>
</div>
<% end %>
<h2>入力</h2>
<p><%= @mes %></p>
<% if @igo %>
<h2>分かち書き</h2>
<p><%= @wakati %></p>
<h2>形態素解析</h2>
<table class="table table-striped table-bordered table-hover">
<thead>
<tr>
<th>形態素の表層形</th>
<th>形態素の素性</th>
<th>テキスト内での形態素の出現開始位置</th>
</tr>
</thead>
<tbody>
<% @igo.each do |i| %>
<tr>
<td><%= "#{i.surface}" %></td>
<td><%= "#{i.feature}" %></td>
<td><%= "#{i.start}" %></td>
</tr>
<% end %>
</tbody>
</table>
<% end %>
home_controller.rb
class HomeController < ApplicationController
def index
igo params[:igo_form][:text].gsub(/(\r\n|\r|\n)/, "") if params[:igo_form]
end
private
def igo arg
@mes = arg.present? ? arg : "引数にparseしたい文章を入れて起動してね"
tagger = Igo::Tagger.new(File.join("#{Rails.root}", "app", "assets", "ipadic"))
@wakati = tagger.wakati(@mes)
@igo = tagger.parse(@mes)
end
end
igo_form.rb
class IgoForm < ActiveRecord::Base
extend ActiveModel::Naming
include ActiveModel::Conversion
attr_accessor :text
def initialize(attributes = {})
self.attributes = attributes
end
def attributes=(attributes = {})
if attributes
attributes.each do |name, value|
send "#{name}=", value
end
end
end
def attributes
Hash[instance_variable_names.map{|v| [v[1..-1], instance_variable_get(v)]}]
end
end
이렇게 된 느낌.MeCab보다 방법이 적고 출력 형식도 적지만, 지금은 크게 신경 쓸 정도는 아닌 것 같다.
좀 서툴지만 참고가 됐으면 좋겠어요
Reference
이 문제에 관하여(igo-ruby와 jubatus를 사용해 보세요~ 문장의 해석편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sgtn/items/e5abc622cfee30f2e763텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)