Treex-Unilang
view release on metacpan or search on metacpan
lib/Treex/Tool/Lexicon/CS.pm view on Meta::CPAN
package Treex::Tool::Lexicon::CS;
$Treex::Tool::Lexicon::CS::VERSION = '2.20151102';
use strict;
use warnings;
use Treex::Core::Common;
use utf8;
use autodie;
use Treex::Core::Resource qw(require_file_from_share);
#TODO: Better way how to make it automatically download.
my $POSSADJ_FN = 'data/models/lexicon/cs/possessive_adjectives.tsv';
my $possadj_filename = require_file_from_share( $POSSADJ_FN, 'Lexicon::CS' );
my @DICENDI_VERBS =
qw(dodat dodávat doplnit hlásit hodnotit informovat komentovat konstatovat lÃÄit
litovat mÃnit napsat ohlásit ohlaÅ¡ovat oznámit oznamovat podotknout popisovat popsat potvrdit povÄdÄt
poznamenat pÅipomenout pÅiznat pÅiznávat prohlásit prohlaÅ¡ovat psát reagovat
ÅÃci ÅÃkat sdÄlit soudit svÄÅit_se tvrdit upozornit upozorÅovat upÅesnit upÅesÅovat usoudit
uvádÄt uvést uzavÅÃt uznat uznávat vylÃÄit vypravovat vyprávÄt vysvÄtlit vysvÄtlovat
vyzvat vyzývat vzpomÃnat zdůraznit);
my %IS_DICENDI_VERB;
foreach my $lemma (@DICENDI_VERBS) {
$IS_DICENDI_VERB{$lemma} = 1;
}
sub is_dicendi_verb {
my ($t_lemma) = @_;
return $IS_DICENDI_VERB{$t_lemma};
}
my %NUMBER_FOR_NUMERAL = (
'nula'=>0, 'jedna'=>1, 'jeden'=>1, 'dva'=>2, 'tÅi'=>3, 'ÄtyÅi'=>4, 'pÄt'=>5,
'Å¡est'=>6, 'sedm'=>7, 'osm'=>8, 'devÄt'=>9, 'deset'=>10,
'jedenáct'=>11, 'dvanáct'=>12, 'tÅináct'=>13, 'Ätrnáct'=>14, 'patnáct'=>15,
'šestnáct'=>16, 'sedmnáct'=>17, 'osmnáct'=>18, 'devatenáct'=>19,
'dvacet'=>20, 'tÅicet'=>30, 'ÄtyÅicet'=>40, 'padesát'=>50,
'šedesát'=>60, 'sedmdesát'=>70, 'osmdesát'=>80, 'devadesát'=>90,
'sto'=>100, 'tisÃc'=>1_000, 'milión'=>1_000_000, 'milion'=>1_000_000, 'miliarda'=>1_000_000_000,
# fractions
'půl'=>1/2, 'polovina'=>1/2, 'tÅetina'=> 1/3, 'Ätvrt'=>1/4, 'Ätvrtina' => 1/4,
'pÄtina'=>1/5, 'Å¡estina'=>1/6, 'sedmina'=>1/7, 'osmina'=>1/8, 'devÃtina' => 1/9,
'desetina' => 1/10, 'jedenáctina' => 1/11, 'dvanáctina' => 1/12, 'tÅináctina' => 1/13,
'Ätrnáctina' => 1/14, 'patnáctina' => 1/15, 'Å¡estnáctina' => 1/16, 'sedmnáctina' => 1/17,
'osmnáctina' => 1/18, 'devatenáctina' => 1/19, 'dvacetina' => 1/20,
'tÅicetina' => 1/30, 'ÄtyÅicetina' => 1/40, 'padesátina' => 1/50, 'Å¡edesátina' => 1/60,
'sedmdesátina' => 1/70, 'osmdesátina' => 1/80, 'devadesátina' => 1/90,
'setina' => 1/100, 'tisÃcina' => 1/1_000, 'milióntina' => 1/1_000_000, 'miliontina'=>1/1_000_000,
# other
'tucet'=>12, 'kopa'=>60, 'veletucet'=>144,
);
my %NUMERAL_FOR_NUMBER = (
0=>'nula', 1=>'jedna', 2=>'dva', 3=>'tÅi', 4=>'ÄtyÅi', 5=>'pÄt', 6=>'Å¡est', 7=>'sedm',
8=>'osm', 9=>'devÄt', 10=>'deset', 11=>'jedenáct', 12=>'dvanáct', 13=>'tÅináct',
14=>'Ätrnáct', 15=>'patnáct', 16=>'Å¡estnáct', 17=>'sedmnáct', 18=>'osmnáct',
19=>'devatenáct', 20=>'dvacet', 30=>'tÅicet', 40=>'ÄtyÅicet', 50=>'padesát', 60=>'Å¡edesát',
70=>'sedmdesát', 80=>'osmdesát', 90=>'devadesát', 100=>'sto', 1000=>'tisÃc',
);
sub number_for {
my ($lemma) = @_;
return $lemma if $lemma =~ /^\d+$/;
return $NUMBER_FOR_NUMERAL{$lemma};
}
# 5 -> pÄti, 19 -> devatenácti, 65 -> pÄtaÅ¡edesáti
sub numeral_prefix_for_number {
my $number = shift;
( run in 1.854 second using v1.01-cache-2.11-cpan-81fc1098f69 )