Ich habe mich nach langer Zeit entschlossen, die Verarbeitung natürlicher Sprache zu versuchen, [Wikipedia: Datenbank-Download](https://ja.wikipedia.org/wiki/Wikipedia:% E3% 83% 87% E3% 83% BC% E3% 82% BF% E3% 83% 99% E3% 83% BC% E3% 82% B9% E3% 83% 80% E3% 82% A6% E3% 83% B3% E3% 83% AD% E3% 83% BC% Ich habe "Wikipedia Japanese version" von E3% 83% heruntergeladen 89). Anstatt ein Verbot des Crawls zu beantragen, können Sie in Wikipedia Dumps herunterladen. Großartig ... aber die heruntergeladene Datei ist eine einzelne XML-Datei. Selbstverständlich beträgt die Dateigröße beim Dekomprimieren nach dem Herunterladen mehr als 12 GB.
$ ll
-rwxrwxrwx 1 k k 12927699165 Apr 12 17:17 xml_jawiki-20200401-pages-articles-multistream.xml*
Wenn ich den Kopf versuche ...
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="ja">
<siteinfo>
<sitename>Wikipedia</sitename>
<dbname>jawiki</dbname>
<base>https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8</base>
<generator>MediaWiki 1.35.0-wmf.25</generator>
<case>first-letter</case>
<namespaces>
<namespace key="-2" case="first-letter">Medien</namespace>
<namespace key="-1" case="first-letter">Besondere</namespace>
<namespace key="0" case="first-letter" />
<namespace key="1" case="first-letter">Hinweis</namespace>
<namespace key="2" case="first-letter">Nutzer</namespace>
...
<namespace key="2302" case="case-sensitive">Gadget definition</namespace>
<namespace key="2303" case="case-sensitive">Gadget definition talk</namespace>
</namespaces>
</siteinfo>
<page>
<title>Wikipedia:Protokoll hochladen April 2004</title>
Wenn Sie etwas weiter gehen, sehen Sie die gesuchten Textdaten. Beispiel:
<title>Informationsingenieurswesen</title>
<ns>0</ns>
<id>63</id>
<revision>
<id>76256715</id>
<parentid>73769903</parentid>
<timestamp>2020-02-18T20:19:50Z</timestamp>
<contributor>
<username>Fuda Juban-dori</username>
<id>1352763</id>
</contributor>
<model>wikitext</model>
<format>text/x-wiki</format>
<text bytes="5880" xml:space="preserve">'''Informationsingenieurswesen'''(Johokougaku)[[Information]]Über das Feld[[Maschinenbau]]Ist. Was das Gefühl von Worten betrifft[[Information科学]]という語がもっぱらおおまかに「科学」という語が指す範囲を中心としているのに対し、「Maschinenbau」的な分野に重心があるが、内実としてはどれもたいして変わらないことが多い(たとえば、大学の学部学科名などに関しては、個々の大学の個性による違いのほうが、名前による違いより大きい)。日本で、大学のMaschinenbau部などに[[Computerwissenschaften|Computerwissenschaften]]ないしInformation関係の学科を設置する際に、「Maschinenbau」部という語との整合のためだけに便利に使われた、という面が大きい([[Informationsingenieurswesen科]]Siehe Artikel).
Auf Englisch[[:en:Information engineering|information engineering]]Ist[[Softwareentwicklung]]Es ist eine der Methoden in und entspricht nicht der "Informationstechnik" auf Japanisch. Mit ähnlichen Worten[[Informatik]]Es gibt.
==Überblick==
Hier werden wir aus der Einführung von Abteilungen einiger Universitäten (nicht spezialisierte Kommentare in der Forschung usw.) extrahieren. Was ist Informationstechnik?[[Information]]Ist ein akademischer Bereich für den technischen Einsatz von<ref>[http://www.ics.keio.ac.jp/dept/concept.html.ja Information工学科のねらい] [[Keio Universität]] Information工学科</ref>。Informationの発生([[Data Mining]]、[[Computergrafik]]など)、Informationの伝達([[Computernetzwerk]]など)、Informationの収集([[Computer Vision]]、[[Suchmaschine]]など)、Informationの蓄積([[Datenbank]]、[[Datenkompression]]など)、Informationの処理([[Technische Informatik]]、[[Computerwissenschaften]]、[[Softwareentwicklung]]) Man kann sagen, dass es sich um ein umfassendes technisches Feld handelt<ref>[http://www.osakac.ac.jp/dept/p/zyuken/gakka2.html Information工学とは何か] [[Osaka Telecommunications University]] Information工学科</ref>。またInformation工学を、物理現象を支配している原理や法則や社会・経済活動をInformationという観点から捉え,コンピュータ上の設計手順に変換することにより自動化する方法を創出する学問分野とする見方もあり、これは英語でいう[[Computing]]Entspricht (Computing)<ref>[http://www.ise.shibaura-it.ac.jp/main02.HTML-Lehrplan] [[Shibaura Institute of Technology]] Information工学科</ref>.. In jedem Fall ist die obige Erklärung ein Auszug aus der Einführung der Universitätsabteilungen.
Informatik und[[Informationswissenschaft]]・ Als akademische Gesellschaft, die sich mit Informationstechnik befasst, wurde sie früh in den Vereinigten Staaten gegründet.[[Association for Computing Machinery|ACM]]Wörtlich übersetzt ist es "Computational Machinery Society". Internationale Institution[[Informationsverarbeitung Vereinte Nationen]]Zum Zeitpunkt seiner Einweihung im Jahr 1960 war allgemein anerkannt, dass Computer Maschinen sind, die Informationen sowie (Zahlen-) Berechnungen verarbeiten, und Hiroshi Wada auch in Bezug auf die Einweihung japanischer akademischer Gesellschaften.<ref>http://museum.ipsj.or.jp/pioneer/h-wada.html</ref>「[[Informationsverarbeitende Gesellschaft]]Benannt[[Informationsverarbeitung]]Ist gekommen, um benutzt zu werden. Ebenfalls[[Elektronische Informations- und Kommunikationsgesellschaft]]Verwendet auch "Information" als Wort, um dieses Feld zu beschreiben.
[[Japan Engineers Association]]In Japan gibt es einen "Unterausschuss für Informationstechnik", und die vom Unterausschuss auferlegten Sekundärprüfungen werden nach Abteilungen durchgeführt. Die Abteilung für Computersoftware wird jedoch als "Abteilung für Informationstechnik" bezeichnet.<ref>http://www.engineer.or.jp/c_categories/index02022.html</ref>([[Ingenieur Informationstechnische Abteilung]])。
*Als Abteilungsname,[[Kyoto Universität]]([[Fakultät für Ingenieurwissenschaften]])und[[Osaka Universität]]([[基礎Fakultät für Ingenieurwissenschaften]]), Das Department of Information Engineering erscheint erstmals 1970. selbes Jahr,[[Tokyo Institute of Technology]]Das Department of Information Science ist ebenfalls verfügbar[[Universität für Telekommunikation]]und[[Yamanashi Universität]]Abteilung für Computerwissenschaften[[Kanazawa Institute of Technology]]Die Abteilung für Informationsverarbeitungstechnik wurde in gegründet.
*Der Name der Fakultät ist die Fakultät für Informationstechnik des Kyushu Institute of Technology, die 1986 gegründet wurde. Zusätzlich zu den beiden Abteilungen für Intelligente Informationstechnik und Elektronische Informationstechnik, die seit 1987 Studenten aufnehmen, die Abteilung für Steuerungssystemtechnik, die Abteilung für Maschinenbau und die Abteilung für biochemische Systemtechnik (derzeit Abteilung für Systemerstellung Informationstechnik, Abteilung für mechanische Informationstechnik, Abteilung für Bioinformatik) Alle fünf Abteilungen sind auf Informationstechnik spezialisiert. Ebenfalls,[[Informationswissenschaft]]Als Fakultät spezialisiert auf[[Informationswissenschaft部]]Existiert und[[Informatik]]Als Fakultät spezialisiert auf[[Informatik部]]Existiert.[[Maschinenbau]]In 1996[[Osaka Institute of Technology]]Wird zuerst installiert.<ref>https://www.oit.ac.jp/is/</ref>
* <!--Informationstechnik wird oft als Informatik übersetzt.--><!--←? Informatik ist Informatik-->""[[Fakultät für Informationstechnik]]Der englische Name ist oft Informatik. Dies liegt daran, dass der Begriff Informatik im englischsprachigen Raum überwiegend leicht zu verstehen ist und als akademischer Hintergrund wie "CS-Abschluss" in der IT-Branche behandelt wird. Information Engineering ist 8 ab 2007/Es ist ungefähr 33. Zum Beispiel Information Engineering[[Universität von Cambridge]]Abteilung Informationstechnik<ref>[http://www.eng.cam.ac.uk/research/div-f/ CUED - Division F: Information Engineering]Universität von Cambridge</ref>。
*In der Graduiertenschule[[Graduiertenschule für Informatik]]Eine solche.
Es scheint, dass ID- und Mitwirkende-Informationen ebenfalls enthalten sind, aber beeilen Sie sich und möchten Sie den Titel und den Text. Es scheint sinnvoll zu sein, in natürlicher Sprache zu verarbeiten, wenn die Länge des Textes länger als ein bestimmtes Niveau ist. Daher scheint es gut, eine Liste mit Titeln und Textlängen zu erstellen. Um nun mit riesigem XML in Python zu arbeiten ... gab es einen Vorgänger: Speichersparmethode beim Lesen von großem XML mit mehreren GB oder mehr mit Python
Oh ja, es ist wichtig, Speicherplatz zu sparen, indem Sie nichts anderes als das neueste Analyseziel in den Speicher lesen. Wenn Sie Daten verarbeiten, die aus dem Speicher überlaufen, ist die Verarbeitung extrem langsam. Daher empfiehlt es sich, die Verarbeitungsgeschwindigkeit für jede festgelegte Anzahl von Fällen aufzuzeichnen. Hier ist das Ergebnis von Versuch und Irrtum beim Nachahmen.
import xml.etree.ElementTree as ET #Verwenden Sie die Standardbibliothek ElementTree
body ="jawiki-20200401-pages-articles"
path =f"../xml_{body}-multistream.xml"
path_w =f"../short_{body}-title.csv"
context = ET.iterparse(path, events=('start', 'end'))
#Überspringen Sie unnötige Knoten wie root
_, r0 = next(context)
_, r1 = next(context)
_, r2 = next(context)
print(r2.text)
count = 0
title =""
import time
start = time.time()
prev = start
with open(path_w, mode='w',encoding="utf-8") as fw:
for event, elem in context:
if event=="start" and elem.text:
txt = elem.text
if "title" in elem.tag:
str = f"{elem.tag}".replace("{http://www.mediawiki.org/xml/export-0.10/}","")
title = txt
if "text" in elem.tag:
str = f"{elem.tag}".replace("{http://www.mediawiki.org/xml/export-0.10/}","")
if len(txt) <= 1000:
x= f"{title},{len(txt)}"
fw.write(x+"\n")
count += 1
if count % 1000 == 0: #Geben Sie die Bearbeitungszeit für jeweils 1000 Fälle aus
next = time.time()
print(count, f"elapsed_time = {next - prev}", x)
prev = next
elem.clear() #Befreie das analysierte Element aus dem Speicher ... ★
print(count)
Kimo ist bei ★. Ohne diesen clear () -Aufruf hat sich die Verarbeitungsgeschwindigkeit meines PCs seit dem Lesen von 40.000 Artikeln stark verlangsamt.
636000 elapsed_time = 0.635291576385498 Wikipedia:Antrag auf Löschung/Wikipedia:Antrag auf Löschung/Log/18. November 2019,2692
637000 elapsed_time = 0.6260190010070801 Wikipedia:Antrag auf Löschung/Taku Inoue(Begriffsklärung),1112
638000 elapsed_time = 0.6080121994018555 Statische Webseite,7108
639000 elapsed_time = 0.6243636608123779 Bambina(Unterhaltungsbüro),2590
640000 elapsed_time = 0.6858398914337158 Yui Wakui,1106
641000 elapsed_time = 0.632981538772583 Tsukigicho(Ikeda Stadt),6688
642000 elapsed_time = 0.5550098419189453 Simon Suruga,2868
643000 elapsed_time = 1.671999454498291 My Sweet Maiden/Welcome To Our Diabolic Paradise,1955
644000 elapsed_time = 0.6001503467559814 West Koriyama Zweiter Industriepark,1699
645000 elapsed_time = 0.6131837368011475 Template:UEFA U-17 Europameisterschaft 2009 Spanien Nationalmannschaft,1002
646000 elapsed_time = 0.6151120662689209 Gengoya,1496
647000 elapsed_time = 0.6119420528411865 Tsushima City Higashi Grundschule,2119
647933
Process finished with exit code 0
Selbst nach 600.000 Fällen kann es in etwa 1 Sekunde pro 1000 Fälle verarbeitet werden. Gut gut. Die ausgefüllte CSV wird in der Reihenfolge "Titel, Körperlänge" ausgefüllt.
EU (Begriffsklärung),1480
Organismus,5850
Erdkunde,2217
Kinderkultur,3866
Alltagsleben,1764
Informationsingenieurswesen,2650
Kontextfreie Sprache,2367
Reguläre Sprache,1830
Natürliche Sprache,1396
Goda Käse,1142
Theologie,1767
Thailand,1792
Zeitungsstudien,2344
Apotheke,2338
Nematisches LCD,1209
Wikipedia:FAQ,1645
Wikipedia:Bleiben Sie ruhig, auch wenn sich die Diskussion erwärmt,2269
Musiker,4380
Mailingliste,3687
Wikipedia:FAQ bearbeiten,4163
Aufzeichnung,2004
Wikipedia:Bildbereitstellungsanforderung,2714
Wikipedia:Datenbank herunterladen,3331
Japanischer Karikaturist,5433
Liste der Spieletitel,2730
Shin Takahashi,5675
Takeichi Terazawa,3951
Zum Vergleich habe ich auch Titel mit 1000 Zeichen oder weniger extrahiert.
1321000 elapsed_time = 0.3331446647644043 Category:JA Gifu Wohlfahrt Ren,165
1322000 elapsed_time = 0.19999384880065918 Category:Taiwanesische Frauen,165
1323000 elapsed_time = 0.22401905059814453 Togenin,11
1324000 elapsed_time = 0.26406049728393555 Campanian Boden,14
1325000 elapsed_time = 0.2306044101715088 Hirugahara River,934
1326000 elapsed_time = 0.25202035903930664 Strombocia,27
1327000 elapsed_time = 0.1840074062347412 Yumekure,23
1328000 elapsed_time = 0.21496915817260742 Wikipedia-Bibliothek,28
1329000 elapsed_time = 0.22100353240966797 Preisuntergrenze,14
1330000 elapsed_time = 0.19901561737060547 Category:Libanon General Competition Spieler,95
1331000 elapsed_time = 0.20599126815795898 Feder Yokomachi,12
1332000 elapsed_time = 0.24999594688415527 Ambroise Marie Francoine Joseph Pariso de Beauvois,42
1333000 elapsed_time = 0.20502090454101562 Category:Nordirische Schauspielerin des 20. Jahrhunderts,273
1333333
Process finished with exit code 0
... Wenn der Titel Kategorie enthält, scheint es eine andere Verwendung zu geben.
So konnte ich den XML-Daten mit 2 Millionen Titeln in zehn Minuten einen Treffer hinzufügen. Thanks.
Recommended Posts