Σελ. 1 από 2 12 ΤελευταίαΤελευταία
Εμφάνιση 1-15 από 17
  1. #1
    Εγγραφή
    09-11-2007
    Μηνύματα
    1.574
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    8192/1024
    ISP
    Cyta Hellas
    DSLAM
    Cyta Hellas - ΤΡΙΠΟΛΗ
    Δεν είμαι και τόσο καλός με τα regex και αναρωτιέμαι αν μπορεί να γίνει το εξής.
    Στα ελληνικά όταν γράφουμε ένα κείμενο και φτάνεις στο τέλος της γραμμής συνεχίζεις στην από κάτω γραμμή. Αν ωστόσο η λέξη δεν χωράει στην πρώτη γραμμή είτε την γράφεις ολόκληρη στην δεύτερη γραμμή είτε την χωρίζεις ανάμεσα στις δυο γραμμές με παύλα.
    Ας υποθέσουμε ότι κάνουμε parse ένα pdf με κείμενο που ενδέχεται να περιέχει παύλες για το "σπάσιμο" των λέξεων μεταξύ των γραμμών. Δηλαδή όταν θα κρατάμε το κείμενο σε μια μεταβλητή (variable) θα περιέχει και τις παύλες μέσα.
    Ας υποθέσουμε ότι θέλουμε να ψάξουμε κάποιες λέξεις-κλειδιά αν περιέχονται στο κείμενο.
    Για παράδειγμα θέλουμε να βρούμε την λέξη "πολυκατοικία". Υπάρχει τρόπος να φτιάξουμε regex που να βρίσκει αυτή την λέξη ακόμα και αν παρεμβάλλεται παύλα σε οποιαδήποτε συλλαβή; Δηλαδή να κάνει match τα εξής:
    1. πολυκατοικία
    2. πο-λυκατοικία
    3. πολυ-κατοικία
    4. πολυκα-τοικία
    5. πολυκατοι-κία

    Στο παρόν σημείο δεν με απασχολούν οι διάφορες μορφές τις λέξεις κατά την κλίση της (πχ πολυκατοικιών).
    Αν ενδιαφέρει, η γλώσσα προγραμματισμού είναι C++ (c++11) και με πρόσβαση σε boost και qt.
    Κάνω προσπάθεια να βάζω ; αντι για ?


  2. #2
    Εγγραφή
    27-10-2006
    Περιοχή
    @Genova/Italy
    Ηλικία
    38
    Μηνύματα
    894
    Downloads
    0
    Uploads
    0
    βασικά μια εναλλακτική που θα πρότεινα είναι να ξεφορτωθείς αυτό το ενδεχόμενο κατά το parsing του κειμένου, έτσι ώστε να κάνεις search την κανονική λέξη. Ουσιαστικά βρίσκεις πότε το hyphen ακολουθείτε από το τέλος της γραμμής διαβάζεις την επόμενη λέξη τις ενώνεις, και βάζεις το τέλος της γραμμής αμέσως μετά, έτσι ψάχνεις κανονικά την λέξη και όχι όλα τα πιθανά ενδεχόμενα. Ένα παράδειγμα μπορείς να δεις εδώ https://stackoverflow.com/a/43667304/1476932, είναι σε python άλλα πιστεύω εύκολα μπορείς να το μετατρέψεις σε C++.
    “The truth is rarely pure and never simple.”― Oscar Wilde

    "A man lives three lifes...
    The first, ends with the loss of naiveness,
    the second, with the loss of innocence
    and the third one with the loss of his soul itself.
    It's inevitable that we go through all three." ― Dark

  3. #3
    Εγγραφή
    09-11-2007
    Μηνύματα
    1.574
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    8192/1024
    ISP
    Cyta Hellas
    DSLAM
    Cyta Hellas - ΤΡΙΠΟΛΗ
    Παράθεση Αρχικό μήνυμα από ThT Εμφάνιση μηνυμάτων
    βασικά μια εναλλακτική που θα πρότεινα είναι να ξεφορτωθείς αυτό το ενδεχόμενο κατά το parsing του κειμένου, έτσι ώστε να κάνεις search την κανονική λέξη.
    Μπορεί και να έχεις δίκιο. Το είχα σκεφτεί και εγώ. Έχει σημασία το πως είναι "βαλμένο" το κείμενο. Δηλαδή αν στο τέλος της γραμμής που βλέπουμε εμείς οι άνθρωποι έχει πράγματι newline ('\n') χαρακτήρα ή αν απλά το πρόγραμμα που κάνει render το κείμενο αλλάζει γραμμή από μόνο του γιατί δεν χωράει άλλος χαρακτήρας.

    Χμμ, θα πρέπει να δω πώς επιστρέφεται το κείμενο από το poppler.
    Κάνω προσπάθεια να βάζω ; αντι για ?


  4. #4
    Εγγραφή
    13-11-2011
    Περιοχή
    Χολαργός
    Ηλικία
    37
    Μηνύματα
    1.446
    Downloads
    1
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    24000 / 4500
    ISP
    Wind
    DSLAM
    Wind - ΧΟΛΑΡΓΟΣ
    Path Level
    Interleaved
    Η παύλα (hyphen) είναι ένα πρόβλημα στην ανάλυση κειμένων. Αυτό που ανέφερε ο ThT είναι μία καλή λύση αλλιώς με RegEx μπορεί να καταλήξεις με λέξεις του στυλ "ΑθήναΘεσσαλονίκη".

    Ψάξε γενικά για tokenizer και stemming (για μετά) για να δεις υλοποιήσεις όπως του lucene-solr για την υλοποίησή τους.

  5. #5
    Εγγραφή
    09-11-2007
    Μηνύματα
    1.574
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    8192/1024
    ISP
    Cyta Hellas
    DSLAM
    Cyta Hellas - ΤΡΙΠΟΛΗ
    Άρα δεν υπάρχει εύκολη λύση εφόσον δεν γίνεται αυτό που λέει ο ThT...
    Κάνω προσπάθεια να βάζω ; αντι για ?


  6. #6
    Εγγραφή
    13-11-2011
    Περιοχή
    Χολαργός
    Ηλικία
    37
    Μηνύματα
    1.446
    Downloads
    1
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    24000 / 4500
    ISP
    Wind
    DSLAM
    Wind - ΧΟΛΑΡΓΟΣ
    Path Level
    Interleaved
    Παράθεση Αρχικό μήνυμα από hammered Εμφάνιση μηνυμάτων
    Άρα δεν υπάρχει εύκολη λύση εφόσον δεν γίνεται αυτό που λέει ο ThT...
    Αν δεν μπορείς να αναγνωρίσεις την αλλαγή γραμμής τότε η "εύκολη" λύση είναι όπου βλέπεις παύλα "-" να την αφαιρείς, αλλά δεν ξέρεις αν όντως ήταν μία λέξη ή δύο ενωμένες.

  7. #7
    Εγγραφή
    27-10-2006
    Περιοχή
    @Genova/Italy
    Ηλικία
    38
    Μηνύματα
    894
    Downloads
    0
    Uploads
    0
    βασικά αν κατά το parsing δεν μπορείς να βρεις την αλλαγή γραμμής τότε όποια λύση και να επιλέξεις είναι ημίμετρο κατά την γνώμη μου (και δεν βλέπω άλλη εύκολή λύση), οπότε μετά εξαρτάται από 'σένα ποια λύση σε βολεύει να κανείς για το συγκεκριμένο application.
    “The truth is rarely pure and never simple.”― Oscar Wilde

    "A man lives three lifes...
    The first, ends with the loss of naiveness,
    the second, with the loss of innocence
    and the third one with the loss of his soul itself.
    It's inevitable that we go through all three." ― Dark

  8. #8
    Εγγραφή
    13-11-2011
    Περιοχή
    Χολαργός
    Ηλικία
    37
    Μηνύματα
    1.446
    Downloads
    1
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    24000 / 4500
    ISP
    Wind
    DSLAM
    Wind - ΧΟΛΑΡΓΟΣ
    Path Level
    Interleaved
    Υπάρχουν και οι λύσεις λεξικού, που ψάχνεις αν το αποτέλεσμα της αφαίρεσης ανήκει σε κάποια λέξη ή όχι. Αυτό όμως προϋποθέτει και stemming για την λέξη ώστε να αφαιρέσεις τις καταλήξεις.

  9. #9
    Εχμ δεν ξερω αν λεω μπαρουφα αλλα ας πουμε ψαχνεις τη λεξη "κατι" . Δεν θα μπορουσε να γραφτει η λεξη "-κ-α-τ-ι-" , δηλαδη σαν να λεμε μετα απο καθε ψηφιο να κολλαει και ενα "-" . οποτε δεν σε νοιαζουν καν οι κανονες συλλαβισμου.

    Για παραδειγμα το "Αθηνα-Θεσσαλονικη" θα ηταν "-Α-θ-η-ν-α-----Θ-ε-σ-σ-α-λ-ο-ν-ι-κ-η-" και το "κατι αλλο" να γραφτει "-κ-α-τ-ι-- --α-λ-λ-ο-". Στο Αθηνα-Θεσσαλονικη εχεις 5 παυλες τη μια μετα την αλλη (αναμεσα στην παυλα υπαρχουν δυο παυλες , καθε ψηφιο περικλειεται απο δυο παυλες, ενω στη δευτερη περιπτωση εχεις κενο ενδιαμεσα.

    -κ-α----
    -τ-ι- (Εδω αλλαζει γραμμη και εχεις 4 παυλες στη σειρα στην ιδια γραμμη.

    Δεν εχω προσπαθησει να υλοποιησω κατι, αλλα ισως εχει καποια λογικη αυτο που γραφω.

    - - - Updated - - -

    Μπα βλακειες γραφω, το θεμα ειναι να καταλαβαινει οτι αλλαζει γραμμη ε?

  10. #10
    Το avatar του μέλους Wizard
    Wizard Guest
    Στο regex pattern να προσθέτεις μία παύλα για κάθε γράμμα της λέξης που ψάχνεις, σαν π-?ο-?λ-?υ-?κ-?α-?τ-?ο-?ι-?κ-?ί-?α
    Δες εδώ: https://regex101.com/r/PomnsY/1

  11. #11
    Εγγραφή
    09-11-2007
    Μηνύματα
    1.574
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    8192/1024
    ISP
    Cyta Hellas
    DSLAM
    Cyta Hellas - ΤΡΙΠΟΛΗ
    Έκανα μια μικρή έρευνα και βρήκα τα εξής συμπεράσματα.
    (χωρίς να τα επιβεβαίωσω πλήρως με το poppler για pdf parsing).
    Το σημάδι της παύλας αντιπροσωπεύεται με αρκετούς διαφορετικούς χαρακτήρες:
    1. Τον κοινό χαρακτήρα "hyphen-minus" που υπάρχει και στο πληκτρολόγιο και έχει ASCII code 45 και unicode codepoint U+002D
    Αυτόν τον χαρακτήρα παρατήρησα ότι βάζει το libreoffice στα pdf export
    2. Τον χαρακτήρα "soft hyphen" με unicode codepoint U+00AD
    Αυτόν τον χαρακτήρα παρατήρησα σε κάποια pdf από MS Office αν δεν κάνω λάθος
    3. Τον χαρακτήρα hyphen σκέτο, από το hypen-minus, με unicode codepoint U+2010

    Επίσης, από ότι κατάλαβα, μετά την παύλα θα έχει πάντα τον χαρακτήρα newline εφόσον τελειώνει εκεί η γραμμή.
    Οπότε η λύση είναι να αφαιρέσεις από το string ((hyphen-minus + newline) && (soft hyphen + newline) && (hyphen + newline))
    Είναι σχεδόν σίγουρο ότι μετά έχεις ολόκληρες λέξεις και ότι δεν ενώνεις κατά λάθος άσχετες λέξεις.

    Βέβαια για να είσαι 100% σίγουρος πρέπει να κάνεις χρήση πιο εξελιγμένων τεχνικών (λεξικά, stemming κλπ). Εγώ για την χρήση που το θέλω καλύπτομαι απόλυτα με την μέθοδο που αναφέρω πιο πάνω.

    - - - Updated - - -

    Και επειδή το ξέχασα. Ένα σχετικό link για τα hyphen characters από wikipedia: https://en.wikipedia.org/wiki/Hyphen#In_computing
    Κάνω προσπάθεια να βάζω ; αντι για ?


  12. #12
    Εγγραφή
    17-03-2003
    Περιοχή
    Trondheim
    Μηνύματα
    3.000
    Downloads
    6
    Uploads
    0
    Ταχύτητα
    Γρήγορη είναι
    ISP
    Telenor
    Δεν χρειάζεσαι regex για αυτό. Απλό split & search αρκεί.

    Θα μπορούσες να ψάξεις αν οι δυο λέξεις που χωρίζονται με παύλα είναι τονισμένες (περιέχουν κάποιο απο τα άέίόύ).

    Πχ στην περίπτωση Θεσσαλονίκη-Αθήνα και οι δύο έχουν τόνο. Το ίδιο με άλλες, άνω-κάτω κλπ.
    Στην περίπτωση που σπάς την λέξη μόνο η μία έχει τόνο, πχ πολυ-κατοικία.

    Πάλι θα έχεις κάποια false positives (πχ με λέξεις με δύο τόνους ή σε comments στο internet) αλλα σε ζητήματα φυσικής γλώσσας ποτέ δεν είσαι 100%. Επίσης μιλάς για PDFs που πιθανότατα θα χουν περάσει κάποιο proofing.

    Τα λεξικά δεν θα δούλευαν τόσο καλά στα ελληνικά καθώς έχουμε μεγάλες και σύνθετες λέξεις, σε αντίθεση με τα αγγλικά (πχ στο πολυ-κατικοία είναι και οι δύο λέξεις)


    Το newline σου δουλέυει σε δίστυλα;
    Τελευταία επεξεργασία από το μέλος Eruyome(MMXGN) : 17-11-18 στις 22:31.

  13. #13
    Εγγραφή
    09-11-2007
    Μηνύματα
    1.574
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    8192/1024
    ISP
    Cyta Hellas
    DSLAM
    Cyta Hellas - ΤΡΙΠΟΛΗ
    Παράθεση Αρχικό μήνυμα από Eruyome(MMXGN) Εμφάνιση μηνυμάτων
    Το newline σου δουλέυει σε δίστυλα;
    Βασικά αυτό που ήθελα να υλοποιήσω ήταν μια ιδέα με βάση τα pdf των ΦΕΚ από το Εθνικό Τυπογραφείο. Τα οποίο είναι δίστηλα.

    Κοίτα τώρα τι παίζει με το pdf format από τα λίγα που κατάλαβα με το poppler. Το format αυτό δεν έχει concept του κειμένου, δηλαδή το πως ρέει φυσικά, πχ από τα αριστερά προς τα δεξιά. Αυτό που το απασχολεί είναι να αποτυπώνει τα glyphs στην τάδε θέση με τις τάδε ιδιότητες (από το τάδε font με τάδε μέγεθος).
    Εσύ ή το library πρέπει να φτιάξεις heuristics για να καταλάβεις τα text sections και την σειρά τους. Πχ ένα section η στήλη στα αριστερά που συνεχίζει στην στήλη στα δεξιά (άλλο section) η οποία συνεχίζει στην αριστερή στήλη της επόμενης σελίδας και ούτω καθεξής.

    Το poppler έχει 3 documented bindings τα οποία δεν προσφέρουν πολλές λειτουργίες και συνήθως δεν έχουν και το ίδιο progress. πχ το binding για glib προσφέρει περισσότερα API από τα άλλα 2.
    Έχει και το δικό του -χωρίς binding- API το οποίο δεν είναι documented.
    Δηλαδή πιάσε το αυτό και κούρευ' το.

    Ευτυχώς το poppler έρχεται και με κάποια πολύ χρήσιμα utils προγράμματα.
    Από αυτά μας ενδιαφέρει το "pdftotext". Αυτό στα ΦΕΚ ξεχωρίζει μια χαρά τις στήλες και φτιάχνει ένα ωραιότατο txt file. Και το καλό είναι ότι από μόνο του φαίνεται να βγάζει τα hyphens στο τέλος των σειρών.

    Οπότε η ιδέα μου είναι υλοποιήσιμη πλέον με χρήση του pdftotext αλλά δεν έχω χρόνο να την ολοκληρώσω (πόσες ιδέες έχω αφήσει έτσι...)
    Κάνω προσπάθεια να βάζω ; αντι για ?


  14. #14
    Εγγραφή
    17-03-2003
    Περιοχή
    Trondheim
    Μηνύματα
    3.000
    Downloads
    6
    Uploads
    0
    Ταχύτητα
    Γρήγορη είναι
    ISP
    Telenor
    Παράθεση Αρχικό μήνυμα από hammered Εμφάνιση μηνυμάτων
    Ευτυχώς το poppler έρχεται και με κάποια πολύ χρήσιμα utils προγράμματα.
    Από αυτά μας ενδιαφέρει το "pdftotext". Αυτό στα ΦΕΚ ξεχωρίζει μια χαρά τις στήλες και φτιάχνει ένα ωραιότατο txt file. Και το καλό είναι ότι από μόνο του φαίνεται να βγάζει τα hyphens στο τέλος των σειρών.
    Πολύ ενδιαφέρον αυτό. Θα το χω στα υπόψιν.

  15. #15
    Εγγραφή
    13-11-2011
    Περιοχή
    Χολαργός
    Ηλικία
    37
    Μηνύματα
    1.446
    Downloads
    1
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    24000 / 4500
    ISP
    Wind
    DSLAM
    Wind - ΧΟΛΑΡΓΟΣ
    Path Level
    Interleaved
    Αφού τα δεδομένα σου είναι από το εθνικό τυπογραφείο, γιατί δεν τα παίρνεις σε text μορφή αλλά μπλέκεις με pdf;

    Πατήστε στην εικόνα για να τη δείτε σε μεγέθυνση. 

Όνομα:  1.png 
Εμφανίσεις:  2 
Μέγεθος:  53,8 KB 
ID: 199109

    Πατήστε στην εικόνα για να τη δείτε σε μεγέθυνση. 

Όνομα:  2.png 
Εμφανίσεις:  3 
Μέγεθος:  53,9 KB 
ID: 199110

    - - - Updated - - -

    Αν βάλεις απλά να σου φέρει όλα τα ΦΕΚ (πχ τεύχος Α) σου εμφανίζει μόνο το κουμπί για pdf. Αν βάλεις λέξεις κλειδιά όμως σου εμφανίζει για τα ίδια ΦΕΚ και το txt.

    - - - Updated - - -

    Από τα ΦΕΚ του 1992 υπάρχει η αναζήτηση...
    Πατήστε στην εικόνα για να τη δείτε σε μεγέθυνση. 

Όνομα:  3.png 
Εμφανίσεις:  3 
Μέγεθος:  66,9 KB 
ID: 199111

Σελ. 1 από 2 12 ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Μηνύματα: 1
    Τελευταίο Μήνυμα: 13-09-18, 04:23
  2. Ζητώ Iphone 7/8 για ανταλλαγή με OP5 JCC+ 8/128
    Από automatix στο φόρουμ Ζήτηση
    Μηνύματα: 0
    Τελευταίο Μήνυμα: 23-03-18, 18:40
  3. Μηνύματα: 4
    Τελευταίο Μήνυμα: 06-03-18, 22:22
  4. Μηνύματα: 1
    Τελευταίο Μήνυμα: 16-02-18, 03:51
  5. Μηνύματα: 50
    Τελευταίο Μήνυμα: 15-01-18, 21:11

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας