ruby-spacy 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +58 -0
- data/.yardopts +2 -0
- data/Gemfile +18 -0
- data/Gemfile.lock +39 -0
- data/LICENSE.txt +21 -0
- data/README.md +498 -0
- data/Rakefile +12 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/examples/get_started/lexeme.rb +24 -0
- data/examples/get_started/linguistic_annotations.rb +32 -0
- data/examples/get_started/most_similar.rb +46 -0
- data/examples/get_started/named_entities.rb +24 -0
- data/examples/get_started/outputs/test_dep.svg +84 -0
- data/examples/get_started/outputs/test_dep_compact.svg +84 -0
- data/examples/get_started/outputs/test_ent.html +11 -0
- data/examples/get_started/pos_tags_and_dependencies.rb +31 -0
- data/examples/get_started/similarity.rb +13 -0
- data/examples/get_started/tokenization.rb +22 -0
- data/examples/get_started/visualizing_dependencies.rb +14 -0
- data/examples/get_started/visualizing_dependencies_compact.rb +12 -0
- data/examples/get_started/visualizing_named_entities.rb +12 -0
- data/examples/get_started/vocab.rb +10 -0
- data/examples/get_started/word_vectors.rb +24 -0
- data/examples/japanese/ancestors.rb +44 -0
- data/examples/japanese/entity_annotations_and_labels.rb +45 -0
- data/examples/japanese/information_extraction.rb +27 -0
- data/examples/japanese/lemmatization.rb +32 -0
- data/examples/japanese/most_similar.rb +46 -0
- data/examples/japanese/named_entity_recognition.rb +27 -0
- data/examples/japanese/navigating_parse_tree.rb +34 -0
- data/examples/japanese/noun_chunks.rb +23 -0
- data/examples/japanese/outputs/test_dep.svg +149 -0
- data/examples/japanese/outputs/test_ent.html +16 -0
- data/examples/japanese/pos_tagging.rb +34 -0
- data/examples/japanese/sentence_segmentation.rb +16 -0
- data/examples/japanese/similarity.rb +12 -0
- data/examples/japanese/tokenization.rb +38 -0
- data/examples/japanese/visualizing_dependencies.rb +13 -0
- data/examples/japanese/visualizing_named_entities.rb +14 -0
- data/examples/linguistic_features/ancestors.rb +41 -0
- data/examples/linguistic_features/entity_annotations_and_labels.rb +29 -0
- data/examples/linguistic_features/finding_a_verb_with_a_subject.rb +20 -0
- data/examples/linguistic_features/information_extraction.rb +36 -0
- data/examples/linguistic_features/iterating_children.rb +24 -0
- data/examples/linguistic_features/iterating_lefts_and_rights.rb +20 -0
- data/examples/linguistic_features/lemmatization.rb +31 -0
- data/examples/linguistic_features/morphology.rb +17 -0
- data/examples/linguistic_features/named_entity_recognition.rb +25 -0
- data/examples/linguistic_features/navigating_parse_tree.rb +32 -0
- data/examples/linguistic_features/noun_chunks.rb +27 -0
- data/examples/linguistic_features/outputs/test_ent.html +11 -0
- data/examples/linguistic_features/pos_tagging.rb +31 -0
- data/examples/linguistic_features/retokenize_1.rb +29 -0
- data/examples/linguistic_features/retokenize_2.rb +16 -0
- data/examples/linguistic_features/rule_based_morphology.rb +12 -0
- data/examples/linguistic_features/sentence_segmentation.rb +16 -0
- data/examples/linguistic_features/similarity.rb +14 -0
- data/examples/linguistic_features/similarity_between_spans.rb +23 -0
- data/examples/linguistic_features/special_case_tokenization_rules.rb +19 -0
- data/examples/linguistic_features/tokenization.rb +23 -0
- data/examples/rule_based_matching/creating_spans_from_matches.rb +16 -0
- data/examples/rule_based_matching/matcher.rb +19 -0
- data/lib/ruby-spacy.rb +567 -0
- data/lib/ruby-spacy/version.rb +6 -0
- data/ruby-spacy.gemspec +42 -0
- metadata +157 -0
@@ -0,0 +1,12 @@
|
|
1
|
+
require "ruby-spacy"
|
2
|
+
|
3
|
+
nlp = Spacy::Language.new("en_core_web_sm")
|
4
|
+
|
5
|
+
sentence ="When Sebastian Thrun started working on self-driving cars at Google in 2007, few people outside of the company took him seriously."
|
6
|
+
doc = nlp.read(sentence)
|
7
|
+
|
8
|
+
ent_html = doc.displacy(style: 'ent')
|
9
|
+
|
10
|
+
File.open(File.join(File.dirname(__FILE__), "test_ent.html"), "w") do |file|
|
11
|
+
file.write(ent_html)
|
12
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "ruby-spacy"
|
2
|
+
require "terminal-table"
|
3
|
+
|
4
|
+
nlp = Spacy::Language.new("en_core_web_lg")
|
5
|
+
doc = nlp.read("dog cat banana afskfsd")
|
6
|
+
|
7
|
+
headings = ["text", "has_vector", "vector_norm", "is_oov"]
|
8
|
+
rows = []
|
9
|
+
|
10
|
+
doc.each do |token|
|
11
|
+
rows << [token.text, token.has_vector, token.vector_norm, token.is_oov]
|
12
|
+
end
|
13
|
+
|
14
|
+
table = Terminal::Table.new rows: rows, headings: headings
|
15
|
+
puts table
|
16
|
+
|
17
|
+
# +---------+------------+-------------------+--------+
|
18
|
+
# | text | has_vector | vector_norm | is_oov |
|
19
|
+
# +---------+------------+-------------------+--------+
|
20
|
+
# | dog | true | 7.033673286437988 | false |
|
21
|
+
# | cat | true | 6.680818557739258 | false |
|
22
|
+
# | banana | true | 6.700014114379883 | false |
|
23
|
+
# | afskfsd | false | 0.0 | true |
|
24
|
+
# +---------+------------+-------------------+--------+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require "ruby-spacy"
|
2
|
+
require "terminal-table"
|
3
|
+
|
4
|
+
nlp = Spacy::Language.new("ja_core_news_lg")
|
5
|
+
|
6
|
+
sentence = "私の父は寿司が好きだ。"
|
7
|
+
doc = nlp.read(sentence)
|
8
|
+
|
9
|
+
headings = ["text", "dep", "n_lefts", "n_rights", "ancestors"]
|
10
|
+
rows = []
|
11
|
+
|
12
|
+
root = doc.tokens.select do |t|
|
13
|
+
# need to compare token and its head using their indices
|
14
|
+
t.i == t.head.i
|
15
|
+
end.first
|
16
|
+
|
17
|
+
puts "The sentence: " + sentence
|
18
|
+
|
19
|
+
# subject = Spacy::Token.new(root.lefts[0])
|
20
|
+
subject = Spacy::Token.new(root.lefts[0])
|
21
|
+
|
22
|
+
puts "The root of the sentence is: " + root.text
|
23
|
+
puts "The subject of the sentence is: " + subject.text
|
24
|
+
|
25
|
+
subject.subtree.each do |descendant|
|
26
|
+
# need to convert "ancestors" object from a python generator to a ruby array
|
27
|
+
ancestors = Spacy::generator_to_array(descendant.ancestors)
|
28
|
+
rows << [descendant.text, descendant.dep_, descendant.n_lefts, descendant.n_rights, ancestors]
|
29
|
+
end
|
30
|
+
|
31
|
+
table = Terminal::Table.new rows: rows, headings: headings
|
32
|
+
puts table
|
33
|
+
|
34
|
+
# The sentence: 私の父は寿司が好きだ。
|
35
|
+
# The root of the sentence is: 好き
|
36
|
+
# The subject of the sentence is: 父
|
37
|
+
# +------+------------+---------+----------+----------------+
|
38
|
+
# | text | dep | n_lefts | n_rights | ancestors |
|
39
|
+
# +------+------------+---------+----------+----------------+
|
40
|
+
# | 私 | nmod | 0 | 1 | [父, 好き] |
|
41
|
+
# | の | case | 0 | 0 | [私, 父, 好き] |
|
42
|
+
# | 父 | dislocated | 1 | 1 | [好き] |
|
43
|
+
# | は | case | 0 | 0 | [父, 好き] |
|
44
|
+
# +------+------------+---------+----------+----------------+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "ruby-spacy"
|
2
|
+
require "terminal-table"
|
3
|
+
|
4
|
+
nlp = Spacy::Language.new("ja_core_news_lg")
|
5
|
+
|
6
|
+
sentence = "同志社大学は日本の京都にある私立大学で、新島襄という人物が創立しました。"
|
7
|
+
doc = nlp.read(sentence)
|
8
|
+
|
9
|
+
headings = ["text", "ent_iob", "ent_iob_", "ent_type_"]
|
10
|
+
rows = []
|
11
|
+
|
12
|
+
doc.each do |ent|
|
13
|
+
rows << [ent.text, ent.ent_iob, ent.ent_iob_, ent.ent_type_]
|
14
|
+
end
|
15
|
+
|
16
|
+
table = Terminal::Table.new rows: rows, headings: headings
|
17
|
+
puts table
|
18
|
+
|
19
|
+
# +--------+---------+----------+-----------+
|
20
|
+
# | text | ent_iob | ent_iob_ | ent_type_ |
|
21
|
+
# +--------+---------+----------+-----------+
|
22
|
+
# | 同志社 | 3 | B | ORG |
|
23
|
+
# | 大学 | 1 | I | ORG |
|
24
|
+
# | は | 2 | O | |
|
25
|
+
# | 日本 | 3 | B | GPE |
|
26
|
+
# | の | 2 | O | |
|
27
|
+
# | 京都 | 3 | B | GPE |
|
28
|
+
# | に | 2 | O | |
|
29
|
+
# | ある | 2 | O | |
|
30
|
+
# | 私立 | 2 | O | |
|
31
|
+
# | 大学 | 2 | O | |
|
32
|
+
# | で | 2 | O | |
|
33
|
+
# | 、 | 2 | O | |
|
34
|
+
# | 新島 | 3 | B | PERSON |
|
35
|
+
# | 襄 | 1 | I | PERSON |
|
36
|
+
# | と | 2 | O | |
|
37
|
+
# | いう | 2 | O | |
|
38
|
+
# | 人物 | 2 | O | |
|
39
|
+
# | が | 2 | O | |
|
40
|
+
# | 創立 | 2 | O | |
|
41
|
+
# | し | 2 | O | |
|
42
|
+
# | まし | 2 | O | |
|
43
|
+
# | た | 2 | O | |
|
44
|
+
# | 。 | 2 | O | |
|
45
|
+
# +--------+---------+----------+-----------+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require( "ruby-spacy")
|
2
|
+
require "terminal-table"
|
3
|
+
|
4
|
+
nlp = Spacy::Language.new("ja_core_news_lg")
|
5
|
+
|
6
|
+
nlp.add_pipe("merge_entities")
|
7
|
+
nlp.add_pipe("merge_noun_chunks")
|
8
|
+
|
9
|
+
texts = [
|
10
|
+
"アメリカ合衆国の国土面積は日本の約25倍あります。",
|
11
|
+
"現在1ドルは日本円で110円です。",
|
12
|
+
]
|
13
|
+
|
14
|
+
texts.each do |text|
|
15
|
+
doc = nlp.read(text)
|
16
|
+
doc.each do |token|
|
17
|
+
if token.dep_ == "case"
|
18
|
+
puts token.head.text + " --> " + token.text
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# アメリカ合衆国 --> の
|
24
|
+
# 国土面積 --> は
|
25
|
+
# 日本 --> の
|
26
|
+
# 現在1ドル --> は
|
27
|
+
# 日本円 --> で
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "ruby-spacy"
|
2
|
+
require "terminal-table"
|
3
|
+
|
4
|
+
nlp = Spacy::Language.new("ja_core_news_sm")
|
5
|
+
|
6
|
+
doc = nlp.read("私は論文を読んでいるところだった。")
|
7
|
+
|
8
|
+
headings = ["text", "lemma"]
|
9
|
+
rows = []
|
10
|
+
|
11
|
+
doc.each do |token|
|
12
|
+
rows << [token.text, token.lemma_]
|
13
|
+
end
|
14
|
+
|
15
|
+
table = Terminal::Table.new rows: rows, headings: headings
|
16
|
+
puts table
|
17
|
+
|
18
|
+
# +--------+--------+
|
19
|
+
# | text | lemma |
|
20
|
+
# +--------+--------+
|
21
|
+
# | 私 | 私 |
|
22
|
+
# | は | は |
|
23
|
+
# | 論文 | 論文 |
|
24
|
+
# | を | を |
|
25
|
+
# | 読ん | 読む |
|
26
|
+
# | で | で |
|
27
|
+
# | いる | いる |
|
28
|
+
# | ところ | ところ |
|
29
|
+
# | だっ | だ |
|
30
|
+
# | た | た |
|
31
|
+
# | 。 | 。 |
|
32
|
+
# +--------+--------+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require "ruby-spacy"
|
2
|
+
require "terminal-table"
|
3
|
+
|
4
|
+
nlp = Spacy::Language.new("ja_core_news_lg")
|
5
|
+
|
6
|
+
tokyo = nlp.get_lexeme("東京")
|
7
|
+
japan = nlp.get_lexeme("日本")
|
8
|
+
france = nlp.get_lexeme("フランス")
|
9
|
+
|
10
|
+
query = tokyo.vector - japan.vector + france.vector
|
11
|
+
|
12
|
+
headings = ["key", "text", "score"]
|
13
|
+
rows = []
|
14
|
+
|
15
|
+
results = nlp.most_similar(query, 20)
|
16
|
+
results.each do |lexeme|
|
17
|
+
rows << [lexeme[:key], lexeme[:text], lexeme[:score],]
|
18
|
+
end
|
19
|
+
|
20
|
+
table = Terminal::Table.new rows: rows, headings: headings
|
21
|
+
puts table
|
22
|
+
|
23
|
+
# +----------------------+----------------+--------------------+
|
24
|
+
# | key | text | score |
|
25
|
+
# +----------------------+----------------+--------------------+
|
26
|
+
# | 12090003238699662352 | パリ | 0.7376999855041504 |
|
27
|
+
# | 18290786970454458111 | フランス | 0.7221999764442444 |
|
28
|
+
# | 9360021637096476946 | 東京 | 0.6697999835014343 |
|
29
|
+
# | 2437546359230213520 | ストラスブール | 0.631600022315979 |
|
30
|
+
# | 13988178952745813186 | リヨン | 0.5939000248908997 |
|
31
|
+
# | 10427160276079242800 | Paris | 0.574400007724762 |
|
32
|
+
# | 5562396768860926997 | ベルギー | 0.5683000087738037 |
|
33
|
+
# | 15029176915627965481 | ニース | 0.5679000020027161 |
|
34
|
+
# | 9750625950625019690 | アルザス | 0.5644999742507935 |
|
35
|
+
# | 2381640614569534741 | 南仏 | 0.5547999739646912 |
|
36
|
+
# | 7486004458946554189 | ロンドン | 0.5525000095367432 |
|
37
|
+
# | 7457654095417343716 | モンマルトル | 0.5453000068664551 |
|
38
|
+
# | 14063777960246535660 | ブローニュ | 0.5338000059127808 |
|
39
|
+
# | 3297880777656467136 | トゥールーズ | 0.5275999903678894 |
|
40
|
+
# | 3059066136348671923 | バスティーユ | 0.5213000178337097 |
|
41
|
+
# | 2423471048892368989 | フランス人 | 0.5194000005722046 |
|
42
|
+
# | 15944886306236465675 | ロレーヌ | 0.5148000121116638 |
|
43
|
+
# | 9592561648283566590 | モンパルナス | 0.513700008392334 |
|
44
|
+
# | 6560045335275831141 | 渡仏 | 0.5131000280380249 |
|
45
|
+
# | 8597467336360225096 | イタリア | 0.5127000212669373 |
|
46
|
+
# +----------------------+----------------+--------------------+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "ruby-spacy"
|
2
|
+
require "terminal-table"
|
3
|
+
|
4
|
+
nlp = Spacy::Language.new("ja_core_news_lg")
|
5
|
+
|
6
|
+
sentence = "任天堂は1983年にファミコンを14,800円で発売した。"
|
7
|
+
doc = nlp.read(sentence)
|
8
|
+
|
9
|
+
headings = ["text", "start", "end", "label"]
|
10
|
+
rows = []
|
11
|
+
|
12
|
+
doc.ents.each do |ent|
|
13
|
+
rows << [ent.text, ent.start_char, ent.end_char, ent.label_]
|
14
|
+
end
|
15
|
+
|
16
|
+
table = Terminal::Table.new rows: rows, headings: headings
|
17
|
+
puts table
|
18
|
+
|
19
|
+
# +------------+-------+-----+---------+
|
20
|
+
# | text | start | end | label |
|
21
|
+
# +------------+-------+-----+---------+
|
22
|
+
# | 任天堂 | 0 | 3 | ORG |
|
23
|
+
# | 1983年 | 4 | 9 | DATE |
|
24
|
+
# | ファミコン | 10 | 15 | PRODUCT |
|
25
|
+
# | 14,800円 | 16 | 23 | MONEY |
|
26
|
+
# +------------+-------+-----+---------+
|
27
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "ruby-spacy"
|
2
|
+
require "terminal-table"
|
3
|
+
|
4
|
+
nlp = Spacy::Language.new("ja_core_news_sm")
|
5
|
+
|
6
|
+
doc = nlp.read("自動運転車は保険責任を製造者に転嫁する。")
|
7
|
+
|
8
|
+
headings = ["text", "dep", "head text", "head pos", "children"]
|
9
|
+
rows = []
|
10
|
+
|
11
|
+
doc.each do |token|
|
12
|
+
rows << [token.text, token.dep_, token.head.text, token.head.pos_, token.children.to_s]
|
13
|
+
end
|
14
|
+
|
15
|
+
table = Terminal::Table.new rows: rows, headings: headings
|
16
|
+
puts table
|
17
|
+
|
18
|
+
# +------+----------+-----------+----------+--------------------------+
|
19
|
+
# | text | dep | head text | head pos | children |
|
20
|
+
# +------+----------+-----------+----------+--------------------------+
|
21
|
+
# | 自動 | compound | 車 | NOUN | [] |
|
22
|
+
# | 運転 | compound | 車 | NOUN | [] |
|
23
|
+
# | 車 | nsubj | 転嫁 | VERB | [自動, 運転, は] |
|
24
|
+
# | は | case | 車 | NOUN | [] |
|
25
|
+
# | 保険 | compound | 責任 | NOUN | [] |
|
26
|
+
# | 責任 | obj | 転嫁 | VERB | [保険, を] |
|
27
|
+
# | を | case | 責任 | NOUN | [] |
|
28
|
+
# | 製造 | compound | 者 | NOUN | [] |
|
29
|
+
# | 者 | obl | 転嫁 | VERB | [製造, に] |
|
30
|
+
# | に | case | 者 | NOUN | [] |
|
31
|
+
# | 転嫁 | ROOT | 転嫁 | VERB | [車, 責任, 者, する, 。] |
|
32
|
+
# | する | aux | 転嫁 | VERB | [] |
|
33
|
+
# | 。 | punct | 転嫁 | VERB | [] |
|
34
|
+
# +------+----------+-----------+----------+--------------------------+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "ruby-spacy"
|
2
|
+
require "terminal-table"
|
3
|
+
|
4
|
+
nlp = Spacy::Language.new("ja_core_news_lg")
|
5
|
+
|
6
|
+
doc = nlp.read("自動運転車は保険責任を製造者に転嫁する。")
|
7
|
+
|
8
|
+
headings = ["text", "root.text", "root.dep", "root.head.text"]
|
9
|
+
rows = []
|
10
|
+
|
11
|
+
doc.noun_chunks.each do |chunk|
|
12
|
+
rows << [chunk.text, chunk.root.text, chunk.root.dep_, chunk.root.head.text]
|
13
|
+
end
|
14
|
+
|
15
|
+
table = Terminal::Table.new rows: rows, headings: headings
|
16
|
+
puts table
|
17
|
+
|
18
|
+
# +------------+-----------+----------+----------------+
|
19
|
+
# | text | root.text | root.dep | root.head.text |
|
20
|
+
# +------------+-----------+----------+----------------+
|
21
|
+
# | 自動運転車 | 車 | nsubj | 転嫁 |
|
22
|
+
# | 製造者 | 者 | obl | 転嫁 |
|
23
|
+
# +------------+-----------+----------+----------------+
|
@@ -0,0 +1,149 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="ja" id="f7ccefe3c5304a1eac38bdfa9bbd6bf2-0" class="displacy" width="2150" height="487.0" direction="ltr" style="max-width: none; height: 487.0px; color: #000000; background: #ffffff; font-family: Arial; direction: ltr">
|
2
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
3
|
+
<tspan class="displacy-word" fill="currentColor" x="50">自動</tspan>
|
4
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="50">NOUN</tspan>
|
5
|
+
</text>
|
6
|
+
|
7
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
8
|
+
<tspan class="displacy-word" fill="currentColor" x="225">運転</tspan>
|
9
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="225">NOUN</tspan>
|
10
|
+
</text>
|
11
|
+
|
12
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
13
|
+
<tspan class="displacy-word" fill="currentColor" x="400">車</tspan>
|
14
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="400">NOUN</tspan>
|
15
|
+
</text>
|
16
|
+
|
17
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
18
|
+
<tspan class="displacy-word" fill="currentColor" x="575">は</tspan>
|
19
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="575">ADP</tspan>
|
20
|
+
</text>
|
21
|
+
|
22
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
23
|
+
<tspan class="displacy-word" fill="currentColor" x="750">保険</tspan>
|
24
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="750">NOUN</tspan>
|
25
|
+
</text>
|
26
|
+
|
27
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
28
|
+
<tspan class="displacy-word" fill="currentColor" x="925">責任</tspan>
|
29
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="925">NOUN</tspan>
|
30
|
+
</text>
|
31
|
+
|
32
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
33
|
+
<tspan class="displacy-word" fill="currentColor" x="1100">を</tspan>
|
34
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="1100">ADP</tspan>
|
35
|
+
</text>
|
36
|
+
|
37
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
38
|
+
<tspan class="displacy-word" fill="currentColor" x="1275">製造</tspan>
|
39
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="1275">NOUN</tspan>
|
40
|
+
</text>
|
41
|
+
|
42
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
43
|
+
<tspan class="displacy-word" fill="currentColor" x="1450">者</tspan>
|
44
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="1450">NOUN</tspan>
|
45
|
+
</text>
|
46
|
+
|
47
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
48
|
+
<tspan class="displacy-word" fill="currentColor" x="1625">に</tspan>
|
49
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="1625">ADP</tspan>
|
50
|
+
</text>
|
51
|
+
|
52
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
53
|
+
<tspan class="displacy-word" fill="currentColor" x="1800">転嫁</tspan>
|
54
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="1800">VERB</tspan>
|
55
|
+
</text>
|
56
|
+
|
57
|
+
<text class="displacy-token" fill="currentColor" text-anchor="middle" y="397.0">
|
58
|
+
<tspan class="displacy-word" fill="currentColor" x="1975">する。</tspan>
|
59
|
+
<tspan class="displacy-tag" dy="2em" fill="currentColor" x="1975">AUX</tspan>
|
60
|
+
</text>
|
61
|
+
|
62
|
+
<g class="displacy-arrow">
|
63
|
+
<path class="displacy-arc" id="arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-0" stroke-width="2px" d="M70,352.0 C70,177.0 390.0,177.0 390.0,352.0" fill="none" stroke="currentColor"/>
|
64
|
+
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
65
|
+
<textPath xlink:href="#arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-0" class="displacy-label" startOffset="50%" side="left" fill="currentColor" text-anchor="middle">compound</textPath>
|
66
|
+
</text>
|
67
|
+
<path class="displacy-arrowhead" d="M70,354.0 L62,342.0 78,342.0" fill="currentColor"/>
|
68
|
+
</g>
|
69
|
+
|
70
|
+
<g class="displacy-arrow">
|
71
|
+
<path class="displacy-arc" id="arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-1" stroke-width="2px" d="M245,352.0 C245,264.5 385.0,264.5 385.0,352.0" fill="none" stroke="currentColor"/>
|
72
|
+
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
73
|
+
<textPath xlink:href="#arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-1" class="displacy-label" startOffset="50%" side="left" fill="currentColor" text-anchor="middle">compound</textPath>
|
74
|
+
</text>
|
75
|
+
<path class="displacy-arrowhead" d="M245,354.0 L237,342.0 253,342.0" fill="currentColor"/>
|
76
|
+
</g>
|
77
|
+
|
78
|
+
<g class="displacy-arrow">
|
79
|
+
<path class="displacy-arc" id="arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-2" stroke-width="2px" d="M420,352.0 C420,2.0 1800.0,2.0 1800.0,352.0" fill="none" stroke="currentColor"/>
|
80
|
+
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
81
|
+
<textPath xlink:href="#arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-2" class="displacy-label" startOffset="50%" side="left" fill="currentColor" text-anchor="middle">nsubj</textPath>
|
82
|
+
</text>
|
83
|
+
<path class="displacy-arrowhead" d="M420,354.0 L412,342.0 428,342.0" fill="currentColor"/>
|
84
|
+
</g>
|
85
|
+
|
86
|
+
<g class="displacy-arrow">
|
87
|
+
<path class="displacy-arc" id="arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-3" stroke-width="2px" d="M420,352.0 C420,264.5 560.0,264.5 560.0,352.0" fill="none" stroke="currentColor"/>
|
88
|
+
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
89
|
+
<textPath xlink:href="#arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-3" class="displacy-label" startOffset="50%" side="left" fill="currentColor" text-anchor="middle">case</textPath>
|
90
|
+
</text>
|
91
|
+
<path class="displacy-arrowhead" d="M560.0,354.0 L568.0,342.0 552.0,342.0" fill="currentColor"/>
|
92
|
+
</g>
|
93
|
+
|
94
|
+
<g class="displacy-arrow">
|
95
|
+
<path class="displacy-arc" id="arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-4" stroke-width="2px" d="M770,352.0 C770,264.5 910.0,264.5 910.0,352.0" fill="none" stroke="currentColor"/>
|
96
|
+
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
97
|
+
<textPath xlink:href="#arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-4" class="displacy-label" startOffset="50%" side="left" fill="currentColor" text-anchor="middle">compound</textPath>
|
98
|
+
</text>
|
99
|
+
<path class="displacy-arrowhead" d="M770,354.0 L762,342.0 778,342.0" fill="currentColor"/>
|
100
|
+
</g>
|
101
|
+
|
102
|
+
<g class="displacy-arrow">
|
103
|
+
<path class="displacy-arc" id="arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-5" stroke-width="2px" d="M945,352.0 C945,89.5 1795.0,89.5 1795.0,352.0" fill="none" stroke="currentColor"/>
|
104
|
+
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
105
|
+
<textPath xlink:href="#arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-5" class="displacy-label" startOffset="50%" side="left" fill="currentColor" text-anchor="middle">obj</textPath>
|
106
|
+
</text>
|
107
|
+
<path class="displacy-arrowhead" d="M945,354.0 L937,342.0 953,342.0" fill="currentColor"/>
|
108
|
+
</g>
|
109
|
+
|
110
|
+
<g class="displacy-arrow">
|
111
|
+
<path class="displacy-arc" id="arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-6" stroke-width="2px" d="M945,352.0 C945,264.5 1085.0,264.5 1085.0,352.0" fill="none" stroke="currentColor"/>
|
112
|
+
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
113
|
+
<textPath xlink:href="#arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-6" class="displacy-label" startOffset="50%" side="left" fill="currentColor" text-anchor="middle">case</textPath>
|
114
|
+
</text>
|
115
|
+
<path class="displacy-arrowhead" d="M1085.0,354.0 L1093.0,342.0 1077.0,342.0" fill="currentColor"/>
|
116
|
+
</g>
|
117
|
+
|
118
|
+
<g class="displacy-arrow">
|
119
|
+
<path class="displacy-arc" id="arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-7" stroke-width="2px" d="M1295,352.0 C1295,264.5 1435.0,264.5 1435.0,352.0" fill="none" stroke="currentColor"/>
|
120
|
+
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
121
|
+
<textPath xlink:href="#arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-7" class="displacy-label" startOffset="50%" side="left" fill="currentColor" text-anchor="middle">compound</textPath>
|
122
|
+
</text>
|
123
|
+
<path class="displacy-arrowhead" d="M1295,354.0 L1287,342.0 1303,342.0" fill="currentColor"/>
|
124
|
+
</g>
|
125
|
+
|
126
|
+
<g class="displacy-arrow">
|
127
|
+
<path class="displacy-arc" id="arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-8" stroke-width="2px" d="M1470,352.0 C1470,177.0 1790.0,177.0 1790.0,352.0" fill="none" stroke="currentColor"/>
|
128
|
+
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
129
|
+
<textPath xlink:href="#arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-8" class="displacy-label" startOffset="50%" side="left" fill="currentColor" text-anchor="middle">obl</textPath>
|
130
|
+
</text>
|
131
|
+
<path class="displacy-arrowhead" d="M1470,354.0 L1462,342.0 1478,342.0" fill="currentColor"/>
|
132
|
+
</g>
|
133
|
+
|
134
|
+
<g class="displacy-arrow">
|
135
|
+
<path class="displacy-arc" id="arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-9" stroke-width="2px" d="M1470,352.0 C1470,264.5 1610.0,264.5 1610.0,352.0" fill="none" stroke="currentColor"/>
|
136
|
+
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
137
|
+
<textPath xlink:href="#arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-9" class="displacy-label" startOffset="50%" side="left" fill="currentColor" text-anchor="middle">case</textPath>
|
138
|
+
</text>
|
139
|
+
<path class="displacy-arrowhead" d="M1610.0,354.0 L1618.0,342.0 1602.0,342.0" fill="currentColor"/>
|
140
|
+
</g>
|
141
|
+
|
142
|
+
<g class="displacy-arrow">
|
143
|
+
<path class="displacy-arc" id="arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-10" stroke-width="2px" d="M1820,352.0 C1820,264.5 1960.0,264.5 1960.0,352.0" fill="none" stroke="currentColor"/>
|
144
|
+
<text dy="1.25em" style="font-size: 0.8em; letter-spacing: 1px">
|
145
|
+
<textPath xlink:href="#arrow-f7ccefe3c5304a1eac38bdfa9bbd6bf2-0-10" class="displacy-label" startOffset="50%" side="left" fill="currentColor" text-anchor="middle">aux</textPath>
|
146
|
+
</text>
|
147
|
+
<path class="displacy-arrowhead" d="M1960.0,354.0 L1968.0,342.0 1952.0,342.0" fill="currentColor"/>
|
148
|
+
</g>
|
149
|
+
</svg>
|