""" 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] """
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.
# coding: utf-8 from confopy.analysis import Analyzer from confopy.localization.de.corpus_de import TigerCorpusReader Analyzer.register(TigerCorpusReader(cache=False))
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())
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
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):