Χρήστης:Flyax/ζήτηση/κώδικας
< Χρήστης:Flyax | ζήτηση
Για να βρεθούν οι αγγλικές λέξεις που έχουν καταχωριστεί ως μεταφράσεις ελληνικών λέξεων αλλά δεν έχουν δικό τους λήμμα, χρειάστηκαν τα εξής εργαλεία:
- σκριπτ για την εύρεση όλων των λημμάτων του ΒΛ που έχουν τομέα γλώσσας αγγλικά
- σκριπτ για την εύρεση των λέξεων που βρίσκονται στον υποτομέα μεταφράσεις και μέσα στο πρότυπο {{τ|en|aggliki lexi edw}}. Εννοείται πως αυτό το σκριπτ δεν είναι τέλειο και θα μπορούσε να βελτιωθεί κι άλλο! Ωστόσο ακόμα και σ' αυτήν την πρώτη φάση που βρίσκεται, ήταν χρήσιμο καθώς μπόρεσε να ανιχνεύσει μερικές χιλιάδες λέξεων.
- το αρχείο xml που περιέχει όλα τα άρθρα του ΒΛ. Πρέπει να έχει το όνομα last_full.xml
Εντολές
επεξεργασίαpython find-en.py | sort | uniq > en-transl python en-titles.py | sort > en-titloi comm -23 en-transl en-titloi > en-apotelesmata
σκριπτ #1: en-titles.py (για την εύρεση όλων των αγγλικών λημμάτων του ΒΛ)
επεξεργασία#!/usr/bin/python # -*- coding: utf-8 -*- import sys, re, codecs reload(sys) sys.setdefaultencoding('utf8') page_tag = re.compile('<page>') page_end = re.compile('<\/page>') title_tag = re.compile('<title>') title_content = re.compile('<title>([^:]+):(.+)<\/title>') title_capture = re.compile('<title>(.*)<\/title>') lang_template = re.compile('\{\{-en-\}\}') language_header=0 # Εδώ διαβάζει το αρχείο xml για να βρει τις αγγλικές λέξεις fin = codecs.open('last_full.xml', 'r', 'utf-8') eof=0 while not eof: line = fin.readline() if line == "": eof = 1 elif page_tag.search(line): namespace="" title="" language_header=0 elif title_tag.search(line): result = title_content.search(line) if result: namespace=result.group(1) title=result.group(2) else: result = title_capture.search(line) if result: namespace="main" title=result.group(1) elif lang_template.search(line) and namespace=='main': print title fin.close()
find-en.py: σκριπτ #2 για την εύρεση των μεταφράσεων
επεξεργασία#!/usr/bin/python # -*- coding: utf-8 -*- import sys, re, codecs reload(sys) sys.setdefaultencoding('utf8') page_tag = re.compile('<page>') page_end = re.compile('<\/page>') title_tag = re.compile('<title>') title_content = re.compile('<title>([^:]+):(.+)<\/title>') title_capture = re.compile('<title>(.*)<\/title>') lang_template = re.compile('\{\{-el-\}\}') en1 = re.compile(u'\{\{τ\|en\|([^\|\}]+)') en2 = re.compile(u'\{\{τ\|en\|([^\}]+)\}\}(.+)?{\{τ\|en\|([^\}]+)\}\}') en3 = re.compile(u'\{\{τ\|en\|([^\}]+)\}\}(.+)?{\{τ\|en\|([^\}]+)\}\}(.+)?{\{τ\|en\|([^\}]+)\}\}') language_header=0 # Εδώ διαβάζει το αρχείο xml για να βρει τις αγγλικές μεταφράσεις fin = codecs.open('last_full.xml', 'r', 'utf-8') eof=0 while not eof: line = fin.readline() if line == "": eof = 1 elif page_tag.search(line): namespace="" title="" language_header=0 elif title_tag.search(line): result = title_content.search(line) if result: namespace=result.group(1) title=result.group(2) else: result = title_capture.search(line) if result: namespace="main" title=result.group(1) elif lang_template.search(line) and namespace=='main': language_header=1 elif language_header and en3.search(line): result=en3.search(line) kleida1=result.group(1) kleida2=result.group(3) kleida3=result.group(5) print kleida1 print kleida2 print kleida3 elif language_header and en2.search(line): result=en2.search(line) kleida1=result.group(1) kleida2=result.group(3) print kleida1 print kleida2 elif language_header and en1.search(line): result=en1.search(line) kleida1=result.group(1) print kleida1 fin.close()