부사를 문구로 검색해 내다
16582 단어 Ruby
추기 2019/11/27
메모 감사합니다.많이 배웠어요(><)
코드에 반영해 보세요.
코드 require 'MeCab'
tmp="" #文字出力に使う
count=0 #動詞出現回数
flag = 0 #サ変の前に文字が入るかどうか
lines = IO.readlines("all_hyouka.txt", chomp: true)
File.open("phrase_data_sahen.rb", "w") do |f|
lines.each do | line |
begin
model = MeCab::Model.new(ARGV.join(" "))
tagger = model.createTagger()
n = tagger.parseToNode(line)
while n do
feature = n.feature.split(",")
if tmp!="" && flag == 1
if feature[0]=="名詞" and feature[1]=="サ変接続" and n.surface!=")" and n.surface!="," and n.surface!="~" and n.surface!="("
tmp << n.surface
flag = 0
else
tmp = ""
flag = 0
end
elsif tmp!="" && count==0
if feature[0]=="動詞" and feature[1]=="自立"
tmp << n.surface
count=count+1
else
tmp = ""
end
elsif tmp!="" && count==1
case feature[0]
when "動詞"
case feature[1]
when "自立"
f.print "\n",tmp
tmp = ""
count=0
when "非自立", "接尾"
tmp << n.surface
end
when "助詞","助動詞","フィラー"
tmp << n.surface
when "形容詞"
case feature[1]
when "自立"
f.print "\n",tmp
tmp = ""
count=0
when "非自立"
tmp << n.surface
end
when "名詞"
case feature[1]
when "サ変接続"
f.print "\n",tmp
tmp = n.surface
count=0
when "接尾","特殊" #,"非自立"
tmp << n.surface
else
f.print "\n",tmp
tmp = ""
count=0
end
when "感動詞","接続詞","接頭詞","副詞","記号","連体詞","BOS/EOS"
f.print "\n",tmp
tmp = ""
count=0
else
f.print "\n",tmp
tmp = ""
count=0
end
else
if (feature[0]=="接頭詞"and feature[1]=="接続名詞")#or(n.feature.split(",")[0]=="副詞" and n.feature.split(",")[1]=="一般")
tmp = n.surface
flag = 1
elsif feature[0]=="名詞" and feature[1]=="サ変接続" and n.surface!=")" and n.surface!="," and n.surface!="~" and n.surface!="("
tmp = n.surface
end
end
n = n.next
end
rescue
print "RuntimeError: ", $!, "\n";
end
end
end
###################以下、語の出現回数計算して大きい順に並べる処理
require "find"
words = Hash.new(0)
lines = IO.readlines("phrase_data_sahen.rb", chomp: true)
lines.each do | line |
words[line] += 1
end
File.open("output_sahen.rb","w") do |output|
output.print "\357\273\277"
words.sort_by{|word,count| [-count,word]}.each do |word,count|
output.print word.chomp,"\n"
end
end
단어의 예를 꺼내다
Reference
이 문제에 관하여(부사를 문구로 검색해 내다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/chabear/items/2dbcaf6aea721336fbd6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
require 'MeCab'
tmp="" #文字出力に使う
count=0 #動詞出現回数
flag = 0 #サ変の前に文字が入るかどうか
lines = IO.readlines("all_hyouka.txt", chomp: true)
File.open("phrase_data_sahen.rb", "w") do |f|
lines.each do | line |
begin
model = MeCab::Model.new(ARGV.join(" "))
tagger = model.createTagger()
n = tagger.parseToNode(line)
while n do
feature = n.feature.split(",")
if tmp!="" && flag == 1
if feature[0]=="名詞" and feature[1]=="サ変接続" and n.surface!=")" and n.surface!="," and n.surface!="~" and n.surface!="("
tmp << n.surface
flag = 0
else
tmp = ""
flag = 0
end
elsif tmp!="" && count==0
if feature[0]=="動詞" and feature[1]=="自立"
tmp << n.surface
count=count+1
else
tmp = ""
end
elsif tmp!="" && count==1
case feature[0]
when "動詞"
case feature[1]
when "自立"
f.print "\n",tmp
tmp = ""
count=0
when "非自立", "接尾"
tmp << n.surface
end
when "助詞","助動詞","フィラー"
tmp << n.surface
when "形容詞"
case feature[1]
when "自立"
f.print "\n",tmp
tmp = ""
count=0
when "非自立"
tmp << n.surface
end
when "名詞"
case feature[1]
when "サ変接続"
f.print "\n",tmp
tmp = n.surface
count=0
when "接尾","特殊" #,"非自立"
tmp << n.surface
else
f.print "\n",tmp
tmp = ""
count=0
end
when "感動詞","接続詞","接頭詞","副詞","記号","連体詞","BOS/EOS"
f.print "\n",tmp
tmp = ""
count=0
else
f.print "\n",tmp
tmp = ""
count=0
end
else
if (feature[0]=="接頭詞"and feature[1]=="接続名詞")#or(n.feature.split(",")[0]=="副詞" and n.feature.split(",")[1]=="一般")
tmp = n.surface
flag = 1
elsif feature[0]=="名詞" and feature[1]=="サ変接続" and n.surface!=")" and n.surface!="," and n.surface!="~" and n.surface!="("
tmp = n.surface
end
end
n = n.next
end
rescue
print "RuntimeError: ", $!, "\n";
end
end
end
###################以下、語の出現回数計算して大きい順に並べる処理
require "find"
words = Hash.new(0)
lines = IO.readlines("phrase_data_sahen.rb", chomp: true)
lines.each do | line |
words[line] += 1
end
File.open("output_sahen.rb","w") do |output|
output.print "\357\273\277"
words.sort_by{|word,count| [-count,word]}.each do |word,count|
output.print word.chomp,"\n"
end
end
Reference
이 문제에 관하여(부사를 문구로 검색해 내다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chabear/items/2dbcaf6aea721336fbd6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)