Ich denke, jeder hat es einmal gekauft. Wenn Sie automatisch ein englisches Wortbuch in Python erstellen,
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/
Die Einführung ist lang geworden, aber ich möchte sofort auf das Hauptthema eingehen!
»Was wirst du machen? --Wie machst du es?
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.
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.
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}')
Dieses Mal werden wir die folgenden vier Teile ** erwerben.
@unique
class PartOfSpeechToLearn(Enum):
JJ = 'Adjective'
VB = 'Verb'
NN = 'Noun'
RB = 'Adverb'
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
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
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
}
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}')
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.
Es gibt drei subtile Gründe: (Korrigiert beim Schreiben der Fortsetzung Update 4/23 11:57)
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.
** 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
Also, wenn Sie diese Serie interessant finden, bitte ** LGTM! ** **.
(** Ü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