File size: 1,750 Bytes
5ac8480
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from dataclasses import dataclass
from typing import List, Union
from dataclasses import astuple, dataclass
import pandas as pd
from camel_tools.disambig.bert import BERTUnfactoredDisambiguator
from camel_tools.disambig.mle import MLEDisambiguator
from camel_tools.utils.charmap import CharMapper

def get_conll_tree_header_list():
    return ["ID", "FORM", "LEMMA", "UPOS", "XPOS", "FEATS", "HEAD", "DEPREL", "DEPS", "MISC"]

@dataclass
class ConllParams:
    file_path: str
    parse_model_path: str
    
    def __iter__(self):
        return iter(astuple(self))

@dataclass
class TextParams:
    lines: List[str]
    parse_model_path: str
    arclean: CharMapper
    disambiguator_param: Union[BERTUnfactoredDisambiguator, MLEDisambiguator, str]
    clitic_feats_df: pd.DataFrame
    tagset: str
    morphology_db_type: str
    
    def __iter__(self):
        return iter(astuple(self))

@dataclass
class PreprocessedTextParams:
    lines: List[str]
    parse_model_path: str
    disambiguator: Union[BERTUnfactoredDisambiguator, MLEDisambiguator, str]
    clitic_feats_df: pd.DataFrame
    tagset: str
    morphology_db_type: str
    
    def __iter__(self):
        return iter(astuple(self))

@dataclass
class TokenizedParams:
    lines: List[str]
    parse_model_path: str

@dataclass
class TokenizedTaggedParams:
    lines: List[str]
    parse_model_path: str

@dataclass
class Token:
    ID: int = -1
    FORM: str = '_'
    LEMMA: str = '_'
    UPOS: str = '_'
    XPOS: str = '_'
    FEATS: str = '_'
    HEAD: int = 0
    DEPREL: str = '_'
    DEPS: str = '_'
    MISC: str = '_'
    
    def to_conll_row(self):
        col_vals = [str(getattr(self, key)) for key in self.__dataclass_fields__.keys()]
        return '\t'.join(col_vals)