Exemplo n.º 1
0
    """
    def __init__(self):
        super(WordLengthMetric, self).__init__("wordlength",
                                               "de",
                                               "Durchschnittliche Wortlänge")

    def evaluate(self, node):
        A = Analyzer.instance()
        #corp = A.get(corpus=u"TIGER")
        words = node.words()
        word_count = len(words)
        word_len = reduce(lambda w, v: w + v, [len(w) for w in words], 0)
        if len(words) > 0:
            return word_len / float(len(words))
        return 0.0
Analyzer.register(WordLengthMetric())


class SpellCheckMetric(Metric):
    """Number of spelling errors relative to number of all words.
    """
    def __init__(self):
        super(SpellCheckMetric, self).__init__("spellcheck",
                                               "de",
                                               "-",
                                               """\
Anzahl an Rechtschreibfehlern relativ zur Gesamtanzahl aller Wörter.""")

    def evaluate(self, node):
        """Value range: [0.0, 1.0]
        """
Exemplo n.º 2
0
            output.append(u"")
            output.append(u"%s | MEAN  | STDEV | TIGER" % u"METRIC".ljust(METRIC_COL_WIDTH))
            output.append(u"%s-+-------+-------+------" % u"".ljust(METRIC_COL_WIDTH, u"-"))
        for i in range(len(metrics)):
            # Execute metrics on reference corpus
            val = metrics[i].evaluate(corp)
            val = round(val, ROUND)
            if args.latex:
                output.append(u"    %s & %s & %s & %s \\\\" % (metric_names[i].ljust(METRIC_COL_WIDTH), stats[i][0], stats[i][1], val))
            else:
                output.append(u"%s | %05.2f | %05.2f | %05.2f" % (metric_names[i].ljust(METRIC_COL_WIDTH), stats[i][0], stats[i][1], val))
        if args.latex:
            output.append(u"\\end{tabular}")
        return u"\n".join(output)

Analyzer.register(DocumentAverages())

class DocumentComparison(Report):
    """Compares the metrics of 2 documents side by side
    """
    PAD = 2

    def __init__(self):
        super(DocumentComparison, self).__init__(u"doccomp",
                                                 u"de",
                                                 u"Vergleicht Vorher-/Nachher-Versionen",
                                                 u"""\
Benötigt eine gerade Anzahl n an Dokumenten (mind. 2).
    Vergleicht das erste Dokument mit dem (n / 2) + 1-sten Dokument usw.
    Bei 2 Dokumenten werden jeweils die Metriken bestimmt und gegenüber-
    gestellt.
Exemplo n.º 3
0
# coding: utf-8

from confopy.analysis import Analyzer
from confopy.localization.de.corpus_de import TigerCorpusReader

Analyzer.register(TigerCorpusReader(cache=False))
Exemplo n.º 4
0


class IntroductionRule(Rule):
    """Chapters must have introductions.
    """
    def __init__(self, ID=u"introduction", language=u"de", brief=u"Kapiteleinleitungen", description=u"Kapitel müssen eine Einleitung haben"):
        super(IntroductionRule, self).__init__(ID, language, brief, description)

    def evaluate(self, node):
        return not is_chapter(node) or has_introduction(node)

    def message(self, node):
        return u"Kapitel \"%s\" hat keine Einleitung!" % node.title

Analyzer.register(IntroductionRule())


class SubsectionRule(Rule):
    """Sections must have at least 2 subsections or none at all.
    """
    def __init__(self, ID=u"subsections", language=u"de", brief=u"Mind. 2 Unterabschnitte", description=u"Sektionen haben entweder 2 oder keine Untersektionen"):
        super(SubsectionRule, self).__init__(ID, language, brief, description)

    def evaluate(self, node):
        return not (is_section(node) and count_subsections(node) > 0) or (count_subsections(node) >= 2)

    def message(self, node):
        return u"Abschnitt \"%s\" hat nur einen Unterabschnitt!" % node.title

Analyzer.register(SubsectionRule())
Exemplo n.º 5
0
            val = metrics[i].evaluate(corp)
            val = round(val, ROUND)
            if args.latex:
                output.append(u"    %s & %s & %s & %s \\\\" %
                              (metric_names[i].ljust(METRIC_COL_WIDTH),
                               stats[i][0], stats[i][1], val))
            else:
                output.append(u"%s | %05.2f | %05.2f | %05.2f" %
                              (metric_names[i].ljust(METRIC_COL_WIDTH),
                               stats[i][0], stats[i][1], val))
        if args.latex:
            output.append(u"\\end{tabular}")
        return u"\n".join(output)


Analyzer.register(DocumentAverages())


class DocumentComparison(Report):
    """Compares the metrics of 2 documents side by side
    """
    PAD = 2

    def __init__(self):
        super(DocumentComparison, self).__init__(
            u"doccomp", u"de", u"Vergleicht Vorher-/Nachher-Versionen", u"""\
Benötigt eine gerade Anzahl n an Dokumenten (mind. 2).
    Vergleicht das erste Dokument mit dem (n / 2) + 1-sten Dokument usw.
    Bei 2 Dokumenten werden jeweils die Metriken bestimmt und gegenüber-
    gestellt.
    Bei mehr als 2 Dokumenten wird gezählt, wie häufig sich Metrikwerte
Exemplo n.º 6
0
Arquivo: rules.py Projeto: ooz/Confopy
    def __init__(self,
                 ID=u"introduction",
                 language=u"de",
                 brief=u"Kapiteleinleitungen",
                 description=u"Kapitel müssen eine Einleitung haben"):
        super(IntroductionRule, self).__init__(ID, language, brief,
                                               description)

    def evaluate(self, node):
        return not is_chapter(node) or has_introduction(node)

    def message(self, node):
        return u"Kapitel \"%s\" hat keine Einleitung!" % node.title


Analyzer.register(IntroductionRule())


class SubsectionRule(Rule):
    """Sections must have at least 2 subsections or none at all.
    """
    def __init__(
            self,
            ID=u"subsections",
            language=u"de",
            brief=u"Mind. 2 Unterabschnitte",
            description=u"Sektionen haben entweder 2 oder keine Untersektionen"
    ):
        super(SubsectionRule, self).__init__(ID, language, brief, description)

    def evaluate(self, node):