Ich habe eine source.txt-Datei, die aus Wörtern besteht. Jedes Wort befindet sich in einer neuen Zeile.multidimensionales Wörterbuch erstellen, um Wortvorkommen zu zählen
apple
tree
bee
go
apple
see
Ich habe auch eine taget_words.txt Datei, wo die Wörter auch in jeweils einer Zeile sind.
apple
bee
house
garden
eat
Jetzt habe ich für jeden der Zielwörter in der Quelldatei zu suchen. Wenn ein Zielwort gefunden wird, z.B. apfel, sollte ein Wörterbucheintrag für das Zielwort und jedes der 3 vorhergehenden und 3 folgenden Wörter gemacht werden. Im Beispielfall würde die
words_dict = {'apple':'tree', 'apple':'bee', 'apple':'go'}
sein Wie kann ich Python sagen durch die Schaffung und das Wörterbuch bevölkert diese drei Worte vor und nach dem Eintritt in dem source_file zu beachten? Meine Idee war, Listen zu verwenden, aber idealerweise sollte der Code sehr effizient und schnell sein, da die Dateien aus einigen Millionen Wörtern bestehen. Ich denke, mit Listen ist die Berechnung sehr langsam.
from collections import defaultdict
words_occ = {}
defaultdict = defaultdict(words_occ)
with open('source.txt') as s_file, open('target_words.txt') as t_file:
for line in t_file:
keys = [line.split()]
lines = s_file.readlines()
for line in lines:
s_words = line.strip()
# if key is found in s_words
# look at the 1st, 2nd, 3rd word before and after
# create a key, value entry for each of them
Später, ich habe das Auftreten eines jeden Schlüssel, Wert-Paar zählen und die Zahl auf ein separates Wörterbuch hinzuzufügen, deshalb habe ich mit einem defaultdict gestartet.
Ich würde mich über jeden Vorschlag für den obigen Code freuen.
Wenn Sie absolut keine Ahnung haben, wie dies zu tun ist, kann ich Ihnen vorschlagen, das Wörterbuch für Python zu lesen? Siehe hier: https: //docs.python.org/3.5/tutorial/datastructures.html#dictionaries – MooingRawr
".. erstellen Sie ein mehrdimensionales Wörterbuch für das Wort Apfel". Es ist unklar (für mich), was genau du versuchst zu tun. – asherbar
Was Sie beschreiben, klingt nicht wie ein "mehrdimensionales" Wörterbuch, nur ein normales. Schlagen Sie vor, dass Sie mit einer for-Schleife beginnen, die jede Zeile der Datei liest und schrittweise die gewünschte Struktur erstellt. Da, jetzt kannst du anfangen! – martineau