[Das stärkste englische Wortbuch Bakusei ww] Generieren Sie automatisch ein englisches Wortbuch, das von Ingenieuren mit Python-Teil 1 benötigt wird

Einführung

Ich denke, jeder hat es einmal gekauft. Wenn Sie automatisch ein englisches Wortbuch in Python erstellen,

Ist es nicht mehr notwendig, ein englisches Wortbuch zu kaufen? Ich werde die Hypothese testen.

** Wenn LGTM 10 überschreitet, ** werden wir im zweiten Teil (oder im zweiten Teil) praktischere erstellen. Wenn Sie es also interessant finden, bitte LGTM ~!

Über den Autor

Biografie

Screen Shot 2020-04-09 at 16.41.03.png Nach dem Abschluss der Abteilung für Elektrotechnik und Informationstechnik einer Fachhochschule im Alter von 20 Jahren, während der Übersetzung von Spezifikationen usw. bei einem technischen Handelsunternehmen, Dolmetschen bei Besuchen bei Herstellern in Übersee, Unternehmensverkäufen usw., 9 Stunden an Samstagen und Sonntagen und 1 Stunde an Wochentagen Selbststudium in Englisch 1 Wir haben TOEIC 900 etwa ein Jahr lang weiter überschritten und IELTS 7.5 erhalten. Derzeit arbeite ich als Backend und KI-Ingenieur als Hauptgeschäft und als Englischlehrer als Nebenjob. Bitte überprüfen Sie dies für Details. https://hossyan-blog.com/profile/

Werbung

my_website.png Vorgestern haben wir eine Englisch-Lernseite für Programmierer eröffnet. Bitte werfen Sie einen Blick auf diesen Blog, der von Personen gelesen werden kann, die kurz vor dem Englischlernen stehen oder sich Sorgen darüber machen, wie sie Englisch lernen sollen. https://hossyan-blog.com/

Die Einführung ist lang geworden, aber ich möchte sofort auf das Hauptthema eingehen!

Inhaltsverzeichnis

»Was wirst du machen? --Wie machst du es?

Was machen?

coding.jpg

Wie in hier eingeführt, ist der ursprüngliche Zweck der Verwendung des Wortbuchs

"** Um sich nur daran zu erinnern, was Sie für das Ziel benötigen, das Sie erreichen möchten **"

Wird sein. Ich denke, die Qiita-Leser sind IT-Ingenieure Dieses Mal werde ich ein englisches Wortbuch ** erstellen, damit Ingenieure technische Bücher lesen können.

Wie man es macht?

stackoverflow.png 1. Holen Sie sich HTML-Daten aus dem Stapelüberlauf 2. Morphologische Analyse 3. Berechnen Sie die Häufigkeit von Wörtern 4. Zeigen Sie diejenigen an, die häufig als Kandidaten angezeigt werden

Da dies der erste Teil ist, werden wir die Daten zunächst nur für einen Bildschirm der folgenden HTML-Seite verwenden, die mit dem Schlüsselwort "Python" gekennzeichnet ist. https://stackoverflow.com/questions/tagged/python

Kommen wir nun zur Code-Einführung.

Ganzer Code

Der ganze Code sieht so aus.

from enum import Enum, unique
from typing import List, Tuple, Set, Dict
import requests

from bs4 import BeautifulSoup as bs
from textblob import TextBlob

URL = 'https://stackoverflow.com/questions/tagged/python'
PARSER = "html.parser"
FILTER_BY_COUNT = 2


@unique
class PartOfSpeechToLearn(Enum):
    JJ = 'Adjective'
    VB = 'Verb'
    NN = 'Noun'
    RB = 'Adverb'


if __name__ == '__main__':
    # Get HTML data and remove html tags
    res = requests.get(URL)
    raw_html = bs(res.text, PARSER)
    texts_without_html: str = raw_html.text

    # morphological analysis
    morph = TextBlob(texts_without_html)
    word_and_tag: List[Tuple[str, str]] = morph.tags

    # Filter words to create a book for vocab
    part_of_speech_to_learn = tuple(pos.name for pos in PartOfSpeechToLearn)
    words_to_learn: Set[str] = {
        wt[0]
        for wt in word_and_tag
        if wt[1] in part_of_speech_to_learn
    }
    words_filtered_by_count: Dict[str, int] = {
        word: morph.words.count(word)
        for word in words_to_learn
        if morph.words.count(word) > FILTER_BY_COUNT
    }

    # Show 50 words that are most frequently used
    words_in_descending_order: List[Tuple[str, int]] = sorted(
        words_filtered_by_count.items(),
        key=lambda x: x[1],
        reverse=True
    )
    for i, word_and_count in enumerate(words_in_descending_order[:50]):
        print(f'rank:{i} word: {word_and_count}')

Stellen Sie den Teil der Sprache ein, der für das Wortbuch abgerufen werden soll

Dieses Mal werden wir die folgenden vier Teile ** erwerben.

  1. ** Addjektiv ** (Adjektiv) Teil, der die Nomenklatur wie groß und lustig ändert
  2. ** Verb ** (Verb) Teil der Bewegung, z. B. Laufen oder Schreiben
  3. ** Nomen ** (Nomen) Apple usw.
  4. ** Adverb ** Teil, der Adjektive und Verben wie wirklich und sicher modifiziert
@unique
class PartOfSpeechToLearn(Enum):
    JJ = 'Adjective'
    VB = 'Verb'
    NN = 'Noun'
    RB = 'Adverb'

Löschen Sie HTML-Tags, nachdem Sie HTML-Daten abgerufen haben

Ich erhalte HTML von einer URL und konvertiere es in Text ohne HTML-Tags.

# Get HTML data and remove html tags
res = requests.get(URL)
raw_html = bs(res.text, PARSER)
texts_without_html: str = raw_html.text

Morphologische Analyse

Führen Sie eine morphologische Analyse durch, um die im Wortbuch enthaltenen Wortteile einzuschränken. TextBlob wird zur morphologischen Analyse verwendet. Für TextBlob habe ich auf [hier] verwiesen (https://textblob.readthedocs.io/en/dev/quickstart.html#part-of-speech-tagging).

# morphological analysis
morph = TextBlob(texts_without_html)
word_and_tag: List[Tuple[str, str]] = morph.tags

Filter für Wordbook

Nachdem Sie nur die Teilwörter gefiltert haben, die Sie in das Wortbuch aufnehmen möchten, erstellen Sie ein Wörterbuch mit Wörtern als Schlüssel und der Anzahl der Vorkommen als Wert, während Sie nach der Anzahl der häufigen Vorkommen filtern (FILTER_BY_COUNT = 2).

part_of_speech_to_learn = tuple(pos.name for pos in PartOfSpeechToLearn)
words_to_learn: Set[str] = {
    wt[0]
    for wt in word_and_tag
    if wt[1] in part_of_speech_to_learn 
}
words_filtered_by_count: Dict[str, int] = {
    word: morph.words.count(word)
    for word in words_to_learn
    if morph.words.count(word) > FILTER_BY_COUNT
}

Zeige die Top 50 nach dem Sortieren in absteigender Reihenfolge

words_in_descending_order: List[Tuple[str, int]] = sorted(
    words_filtered_by_count.items(),
    key=lambda x: x[1],
    reverse=True
)

# Show 50 words that are most frequently used
for i, word_and_count in enumerate(words_in_descending_order[:50]):
    print(f'rank:{i} word: {word_and_count}')

Ausführungsergebnis

surprise.jpg

Kann es ein englisches Wortbuch sein .....................?

Klicken Sie hier für die wesentlichen Ausführungsergebnisse .....................!

rank:0 word: ('i', 96)
rank:1 word: ('python', 86)
rank:2 word: ('ago', 50)
rank:3 word: ('bronze', 36)
rank:4 word: ('have', 29)
rank:5 word: ('×', 25)
rank:6 word: ('stack', 21)
rank:7 word: ('file', 17)
rank:8 word: ('List', 17)
rank:9 word: ('list', 17)
rank:10 word: ('data', 16)
rank:11 word: ('like', 14)
rank:12 word: ('be', 14)
rank:13 word: ('language', 13)
rank:14 word: ('pandas', 13)
rank:15 word: ('code', 12)
rank:16 word: ('create', 11)
rank:17 word: ('there', 10)
rank:18 word: ('dataframe', 10)
rank:19 word: ('not', 9)
rank:20 word: ('function', 9)
rank:21 word: ('silver', 9)
rank:22 word: ('work', 8)
rank:23 word: ('String', 8)
rank:24 word: ('string', 8)
rank:25 word: ('Get', 8)
rank:26 word: ('get', 8)
rank:27 word: ('r', 7)
rank:28 word: ('R', 7)
rank:29 word: ('tags', 7)
rank:30 word: ('following', 7)
rank:31 word: ('flask', 7)
rank:32 word: ('input', 7)
rank:33 word: ('do', 7)
rank:34 word: ('plot', 6)
rank:35 word: ('layout', 6)
rank:36 word: ('import', 6)
rank:37 word: ('array', 6)
rank:38 word: ('use', 6)
rank:39 word: ('below', 6)
rank:40 word: ('object', 6)
rank:41 word: ('format', 6)
rank:42 word: ('python-3.x', 6)
rank:43 word: ('app', 6)
rank:44 word: ('log', 5)
rank:45 word: ('add', 5)
rank:46 word: ('variable', 5)
rank:47 word: ('scrapy', 5)
rank:48 word: ('def', 5)
rank:49 word: ('c', 5)

Hmm, es ist ein bisschen subtil. Das Ergebnis ist jedoch fast wie erwartet.

Verbesserungspunkte und Verbesserungsmethoden

meeting_1.jpg

Es gibt drei subtile Gründe: (Korrigiert beim Schreiben der Fortsetzung Update 4/23 11:57)

  1. Es gibt Wörter, die nur im Programm verwendet werden
  2. Nicht zwischen Groß- und Kleinschreibung unterscheiden
  3. Überpassen Sie die Stapelüberlaufseite

Als Verbesserungsmethode von 1 ** ist es notwendig, die Vorverarbeitung etwas weiter fortgeschritten zu machen **. In Bezug auf 3 scheint es notwendig zu sein, die erfassten Daten ** durch Mischen der einzelnen Fragenseite von Stackoverflow, anderen technischen Blogs, technischen Nachrichten usw. ** zu erhöhen.

Am Ende

coffee.jpg

** Wenn LGTM 10 überschreitet, ** werde ich die Verbesserungspunkte beheben und den nächsten Artikel (zweiter Teil oder zweiter Teil) schreiben. Und wenn das Wordbook fertig ist, teilen Sie die Daten mit Ihnen

Wir werden daraus ein Formular machen, das tatsächlich als Wortbuch verwendet werden kann!

Also, wenn Sie diese Serie interessant finden, bitte ** LGTM! ** **.

Folge

(** Über LGTM10 !! (Danke) ** Derzeit schreibe ich einen Artikel für die nächste Arbeit, aber ich kann so viele höfliche Artikel schreiben, wie es LGTMs gibt. Wenn Sie es für gut halten, fahren Sie bitte mit LGTM fort. ! Update 23.04. 9:00)

Ich habe den zweiten Teil geschrieben! Bitte klicken Sie hier! [Das stärkste englische Wortbuch Bakusei ww] Generieren Sie automatisch ein englisches Wortbuch, das von Ingenieuren mit Python-Teil 2 benötigt wird

Recommended Posts

[Das stärkste englische Wortbuch Bakusei ww] Generieren Sie automatisch ein englisches Wortbuch, das von Ingenieuren mit Python-Teil 1 benötigt wird
Englisches Wortbuchprogramm, das mit Google-Dokumenten verknüpft ist
[Python] PDF automatisch mit DeepL übersetzen, dabei das Originalformat beibehalten. [Windows / Word erforderlich]