From b8c538256f2749fa184894d52052660473c6b9ee Mon Sep 17 00:00:00 2001 From: Marc Kupietz Date: Sat, 16 Mar 2024 18:54:08 +0100 Subject: [PATCH] Add simple Spacy support Change-Id: I37ec0dce14ca456c8a4804dc9dd198c3d153b359 --- Changes | 3 + Readme.pod | 5 +- lib/KorAP/XML/Annotation/Spacy/Morpho.pm | 47 ++++ lib/KorAP/XML/Krill.pm | 2 +- script/korapxml2krill | 12 +- t/annotation/corpus/doc/0001/spacy/morpho.xml | 206 ++++++++++++++++++ t/annotation/spacy_morpho.t | 55 +++++ t/corpus/archives/wpd15-single.spacy.zip | Bin 0 -> 70264 bytes t/script/archive.t | 2 +- t/script/single.t | 36 ++- 10 files changed, 361 insertions(+), 7 deletions(-) create mode 100644 lib/KorAP/XML/Annotation/Spacy/Morpho.pm create mode 100644 t/annotation/corpus/doc/0001/spacy/morpho.xml create mode 100644 t/annotation/spacy_morpho.t create mode 100644 t/corpus/archives/wpd15-single.spacy.zip diff --git a/Changes b/Changes index 684dd95..338a5d5 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,6 @@ +0.53 2023-03-20 + - Added Spacy support. (kupietz) + 0.52 2023-01-23 - Introduced 'quiet' flag. diff --git a/Readme.pod b/Readme.pod index a9ab89c..0b5bcbf 100644 --- a/Readme.pod +++ b/Readme.pod @@ -436,6 +436,9 @@ L. #Lemma #Morpho + Spacy + #Morpho + Talismane #Dependency #Morpho @@ -613,7 +616,7 @@ Copyright (C) 2015-2024, L Author: L -Contributor: Eliza Margaretha +Contributor: Eliza Margaretha, Marc Kupietz L is developed as part of the L Corpus Analysis Platform at the diff --git a/lib/KorAP/XML/Annotation/Spacy/Morpho.pm b/lib/KorAP/XML/Annotation/Spacy/Morpho.pm new file mode 100644 index 0000000..5c36b98 --- /dev/null +++ b/lib/KorAP/XML/Annotation/Spacy/Morpho.pm @@ -0,0 +1,47 @@ +package KorAP::XML::Annotation::Spacy::Morpho; +use KorAP::XML::Annotation::Base; + +sub parse { + my $self = shift; + + $$self->add_tokendata( + foundry => 'spacy', + layer => 'morpho', + cb => sub { + my ($stream, $token) = @_; + my $mtt = $stream->pos($token->get_pos); + + my $content = $token->get_hash->{fs}->{f}; + + my $array = $content->{fs}->{f} or return; + + # In case there is only a lemma/pos ... + $array = ref $array ne 'ARRAY' ? [$array] : $array; + + my $found; + + foreach my $f (@$array) { + + next unless $f->{-name}; + + # pos tag + if (($f->{-name} eq 'pos') && + ($found = $f->{'#text'})) { + $mtt->add_by_term('spacy/p:' . $found); + } + + # lemma tag + elsif (($f->{-name} eq 'lemma') + && ($found = $f->{'#text'})) { + $mtt->add_by_term('spacy/l:' . $found); + }; + }; + }) or return; + return 1; +}; + +sub layer_info { + ['spacy/l=tokens', 'spacy/p=tokens'] +}; + +1; diff --git a/lib/KorAP/XML/Krill.pm b/lib/KorAP/XML/Krill.pm index 06dd102..2a16e6b 100644 --- a/lib/KorAP/XML/Krill.pm +++ b/lib/KorAP/XML/Krill.pm @@ -16,7 +16,7 @@ use Exporter 'import'; our @EXPORT_OK = qw(get_file_name get_file_name_from_glob); -our $VERSION = '0.52'; +our $VERSION = '0.53'; has 'path'; has [qw/text_sigle doc_sigle corpus_sigle/]; diff --git a/script/korapxml2krill b/script/korapxml2krill index 51352e8..77a1260 100755 --- a/script/korapxml2krill +++ b/script/korapxml2krill @@ -171,9 +171,12 @@ use Fcntl qw(:flock SEEK_END); # 2023/02/13 # - Fix temporary-extract handling from configuration file. # +# 2024/03/20 +# - Added Spacy support. +# # ---------------------------------------------------------- -our $LAST_CHANGE = '2023/05/16'; +our $LAST_CHANGE = '2024/03/20'; our $LOCAL = $FindBin::Bin; our $KORAL_VERSION = 0.03; our $VERSION_MSG = <<"VERSION"; @@ -514,6 +517,10 @@ push(@layers, ['Sgbr', 'Lemma'], ['Sgbr', 'Morpho']); +# Spacy +push(@layers, + ['Spacy', 'Morpho']); + # Talismane push(@layers, ['Talismane', 'Dependency'], @@ -1521,6 +1528,9 @@ L. #Lemma #Morpho + Spacy + #Morpho + Talismane #Dependency #Morpho diff --git a/t/annotation/corpus/doc/0001/spacy/morpho.xml b/t/annotation/corpus/doc/0001/spacy/morpho.xml new file mode 100644 index 0000000..3328a8a --- /dev/null +++ b/t/annotation/corpus/doc/0001/spacy/morpho.xml @@ -0,0 +1,206 @@ + + + + + + + + + ADP + zu + + + + + + + + + ADJ + letzter + + + + + + + + + ADJ + kulturell + + + + + + + + + NOUN + Anlass + + + + + + + + + VERB + laden + + + + + + + + + DET + der + + + + + + + + + NOUN + Leitung + + + + + + + + + DET + der + + + + + + + + + NOUN + Schulheim + + + + + + + + + PROPN + Hofbergli + + + + + + + + + ADV + ein + + + + + + + + + PUNCT + -- + + + + + + + + + SCONJ + bevor + + + + + + + + + DET + der + + + + + + + + + NOUN + Betrieb + + + + + + + + + NOUN + Ende + + + + + + + + + NOUN + Schuljahr + + + + + + + + + VERB + einstellen + + + + + + + + + AUX + werden + + + + + + + + + PUNCT + -- + + + + + + diff --git a/t/annotation/spacy_morpho.t b/t/annotation/spacy_morpho.t new file mode 100644 index 0000000..8999acc --- /dev/null +++ b/t/annotation/spacy_morpho.t @@ -0,0 +1,55 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use utf8; +use Test::More; +use KorAP::XML::Annotation::Spacy::Morpho; +use Scalar::Util qw/weaken/; +use Data::Dumper; +use lib 't/annotation'; +use TestInit; + +ok(my $tokens = TestInit::tokens('0001'), 'Parse tokens'); + +ok($tokens->add('Spacy', 'Morpho'), 'Add Structure'); + +my $data = $tokens->to_data->{data}; + +like($data->{foundries}, qr!spacy/morpho!, 'data'); +like($data->{layerInfos}, qr!spacy/p=tokens!, 'data'); +like($data->{layerInfos}, qr!spacy/l=tokens!, 'data'); + +is($data->{stream}->[0]->[5], 'spacy/l:zu', 'POS'); +is($data->{stream}->[0]->[6], 'spacy/p:ADP', 'POS'); + +is($data->{stream}->[3]->[3], 'spacy/l:Anlass', 'POS'); +is($data->{stream}->[3]->[4], 'spacy/p:NOUN', 'POS'); + +is($data->{stream}->[10]->[3], 'spacy/l:ein', 'POS'); +is($data->{stream}->[10]->[4], 'spacy/p:ADV', 'POS'); + +is($data->{stream}->[13]->[3], 'spacy/l:Betrieb', 'POS'); + +is($data->{stream}->[-1]->[3], 'spacy/l:werden', 'POS'); +is($data->{stream}->[-1]->[4], 'spacy/p:AUX', 'POS'); + +is($data->{stream}->[11]->[3], 'spacy/l:bevor', + 'Lemma'); +is($data->{stream}->[11]->[4], 'spacy/p:SCONJ', + 'POS'); + +is($data->{stream}->[12]->[1], 'i:der','Surface'); +is($data->{stream}->[13]->[1], 'i:betrieb','Surface'); +is($data->{stream}->[14]->[1], 'i:ende','Surface'); +is($data->{stream}->[15]->[1], 'i:schuljahr','Surface'); +is($data->{stream}->[16]->[1], 'i:eingestellt','Surface'); +is($data->{stream}->[17]->[1], 'i:wird','Surface'); + +ok(!$data->{stream}->[18],'Nothing'); + +is(scalar(@{$data->{stream}}), 18, 'Length'); + +done_testing; + +__END__ + diff --git a/t/corpus/archives/wpd15-single.spacy.zip b/t/corpus/archives/wpd15-single.spacy.zip new file mode 100644 index 0000000000000000000000000000000000000000..5bbc1217d37c56f0e779e6c04c332b604827b150 GIT binary patch literal 70264 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

xk>Sd@ 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 K^)E<7M)p7Y2wOJ* literal 0 HcmV?d00001 diff --git a/t/script/archive.t b/t/script/archive.t index 0f57183..41389bb 100644 --- a/t/script/archive.t +++ b/t/script/archive.t @@ -123,7 +123,7 @@ my ($json_1, $json_2); ok(($json_1 = decode_json $file), 'decode json'); is($json_1->{data}->{tokenSource}, 'tree_tagger#tokens', 'TokenSource'); - is($json_1->{data}->{foundries}, 'base base/paragraphs base/sentences connexor connexor/morpho connexor/phrase connexor/sentences connexor/syntax corenlp corenlp/constituency corenlp/morpho corenlp/sentences dereko dereko/structure glemm glemm/morpho mate mate/dependency mate/morpho opennlp opennlp/morpho opennlp/sentences treetagger treetagger/morpho treetagger/sentences xip xip/constituency xip/morpho xip/sentences', 'Foundries'); + is($json_1->{data}->{foundries}, 'base base/paragraphs base/sentences connexor connexor/morpho connexor/phrase connexor/sentences connexor/syntax corenlp corenlp/constituency corenlp/morpho corenlp/sentences dereko dereko/structure glemm glemm/morpho mate mate/dependency mate/morpho opennlp opennlp/morpho opennlp/sentences spacy spacy/morpho treetagger treetagger/morpho treetagger/sentences xip xip/constituency xip/morpho xip/sentences', 'Foundries'); is($json_1->{textSigle}, 'Corpus/Doc/0001', 'Sigle'); ok(-f $json_2, 'Json file exists'); diff --git a/t/script/single.t b/t/script/single.t index 01d119f..4772c1c 100644 --- a/t/script/single.t +++ b/t/script/single.t @@ -54,7 +54,7 @@ ok((my $json = decode_json $file), 'decode json'); is($json->{textType}, 'Zeitung: Tageszeitung', 'text type'); is($json->{title}, 'Beispiel Text', 'Title'); is($json->{data}->{tokenSource}, 'opennlp#tokens', 'Title'); -is($json->{data}->{foundries}, 'base base/paragraphs base/sentences connexor connexor/morpho connexor/phrase connexor/sentences connexor/syntax corenlp corenlp/constituency corenlp/morpho corenlp/sentences dereko dereko/structure glemm glemm/morpho mate mate/dependency mate/morpho opennlp opennlp/morpho opennlp/sentences treetagger treetagger/morpho treetagger/sentences xip xip/constituency xip/morpho xip/sentences', 'Foundries'); +is($json->{data}->{foundries}, 'base base/paragraphs base/sentences connexor connexor/morpho connexor/phrase connexor/sentences connexor/syntax corenlp corenlp/constituency corenlp/morpho corenlp/sentences dereko dereko/structure glemm glemm/morpho mate mate/dependency mate/morpho opennlp opennlp/morpho opennlp/sentences spacy spacy/morpho treetagger treetagger/morpho treetagger/sentences xip xip/constituency xip/morpho xip/sentences', 'Foundries'); like($json->{data}->{text}, qr/^Zum letzten kulturellen/, 'Foundries'); is($json->{data}->{stream}->[0]->[0], '-:base/paragraphs$1', 'Paragraphs'); is($json->{data}->{tokenSource}, 'opennlp#tokens', 'TokenSource'); @@ -87,7 +87,7 @@ ok($json = decode_json($file), 'decode json'); is($json->{textType}, 'Zeitung: Tageszeitung', 'text type'); is($json->{title}, 'Beispiel Text', 'Title'); is($json->{data}->{tokenSource}, 'opennlp#tokens', 'TokenSource'); -is($json->{data}->{foundries}, 'base base/paragraphs base/sentences connexor connexor/morpho connexor/phrase connexor/sentences connexor/syntax corenlp corenlp/constituency corenlp/morpho corenlp/sentences dereko dereko/structure glemm glemm/morpho mate mate/dependency mate/morpho opennlp opennlp/morpho opennlp/sentences treetagger treetagger/morpho treetagger/sentences xip xip/constituency xip/morpho xip/sentences', 'Foundries'); +is($json->{data}->{foundries}, 'base base/paragraphs base/sentences connexor connexor/morpho connexor/phrase connexor/sentences connexor/syntax corenlp corenlp/constituency corenlp/morpho corenlp/sentences dereko dereko/structure glemm glemm/morpho mate mate/dependency mate/morpho opennlp opennlp/morpho opennlp/sentences spacy spacy/morpho treetagger treetagger/morpho treetagger/sentences xip xip/constituency xip/morpho xip/sentences', 'Foundries'); like($json->{data}->{text}, qr/^Zum letzten kulturellen/, 'Foundries'); is($json->{data}->{stream}->[0]->[0], '-:base/paragraphs$1', 'Paragraphs'); @@ -227,11 +227,41 @@ is($json->{fields}->[22]->{type}, 'type:text'); is($json->{fields}->[22]->{'@type'}, 'koral:field'); is($json->{data}->{tokenSource}, 'opennlp#tokens', 'Title'); -is($json->{data}->{foundries}, 'base base/paragraphs base/sentences connexor connexor/morpho connexor/phrase connexor/sentences connexor/syntax corenlp corenlp/constituency corenlp/morpho corenlp/sentences dereko dereko/structure glemm glemm/morpho mate mate/dependency mate/morpho opennlp opennlp/morpho opennlp/sentences treetagger treetagger/morpho treetagger/sentences xip xip/constituency xip/morpho xip/sentences', 'Foundries'); +is($json->{data}->{foundries}, 'base base/paragraphs base/sentences connexor connexor/morpho connexor/phrase connexor/sentences connexor/syntax corenlp corenlp/constituency corenlp/morpho corenlp/sentences dereko dereko/structure glemm glemm/morpho mate mate/dependency mate/morpho opennlp opennlp/morpho opennlp/sentences spacy spacy/morpho treetagger treetagger/morpho treetagger/sentences xip xip/constituency xip/morpho xip/sentences', 'Foundries'); like($json->{data}->{text}, qr/^Zum letzten kulturellen/, 'Foundries'); is($json->{data}->{stream}->[0]->[0], '-:base/paragraphs$1', 'Paragraphs'); is($json->{data}->{tokenSource}, 'opennlp#tokens', 'TokenSource'); +my $token = join(',',@{$json->{data}->{stream}->[1]}); + +like($token, qr!<>:xip\/c:AP\$6441125!); +like($token, qr!<>:xip\/c:ADJ\$6441126!); +like($token, qr!<>:cnx\/c:np\$6443040!); +like($token, qr!<>:xip\/c:NP\$6443043!); +like($token, qr!<>:xip\/c:NPA\$6443044!); +like($token, qr!>:mate\/d:NK\$323!); +like($token, qr!_1\$411!); +like($token, qr!cnx\/l:letzt!); +like($token, qr!cnx\/p:A!); +like($token, qr!cnx\/syn:\@PREMOD!); +like($token, qr!corenlp\/p:ADJ!); +like($token, qr!glemm\/l:__letzt-!); +like($token, qr!i:letzten!); +like($token, qr!mate\/l:letzter!); +like($token, qr!mate\/m:case:dat!); +like($token, qr!mate\/m:degree:pos!); +like($token, qr!mate\/m:gender:neut!); +like($token, qr!mate\/m:number:sg!); +like($token, qr!mate\/p:ADJA!); +like($token, qr!opennlp\/p:ADJA!); +like($token, qr!s:letzten!); +like($token, qr!spacy\/l:letzter!); +like($token, qr!spacy\/p:ADJ!); +like($token, qr!tt\/l:letzt!); +like($token, qr!tt\/p:ADJA!); +like($token, qr!xip\/l:letzt!); +like($token, qr!xip\/p:ADJ!); + # Delete output unlink $output; ok(!-f $output, 'Output does not exist');