Closed martinreynaert closed 5 years ago
Let us examine this again and make a case for wider generic applicability and general usefulness.
Use case: the researcher has identified a range of files selected on the basis of some metadata criterion to work with. He has produced a list of file names. The files are scattered over his vast archives and for reasons of space economy, the researcher does not feel inclined to copy them to some new location, in some subdirectories that would allow the current tool to process them the way he wants to process them.
The user devises some labelling system that identifies which files should be categorized as belonging to the same batch. Depending on the granularity of his labelling system, individual files may either be processed individually or combined with other files to form a new subcorpus. He applies this labelling system to his list of file names.
FoLiA-stats then processes these files and selects the input on the basis of the labels and produces output files that combine a user specified generic prefix for the whole job with the specific labels, producing as many distinct frequency lists as there are labels.
Please consider this scenario.
as a simple start, I would suggest the following: The user has to create create an exhaustive list of filenames and labels, (or reversed) The software (starting with FoLiA-stats) will use this list to get the files to process, and the label is used as as sub-directory and/or output-prefix for the results.
so along this line:
subdir1/file1908.01.xml 1908
subdir1/file1908.02.xml 1908
subdir2/file1908.03.xml 1908
...
subdir1/file1908.11.xml 1908
subdir8/file1908.12.xml 1908
subdir1file1909.01.xml 1909
....
subdir78/file1908.12.xml 1909
etc.
A more sophisticated solution would support wildcards:
subdir1/file1908.*.xml 1908
subdir2/file1909.*.xml 1909
But wildcards in the paths may be a problem. I would have to look into that. I suggest starting with the 'simple' solution.
This would be a start, thanks!
Please do not bother to look into wildcards now.
I would much rather have a solution that actually produces an amalgamated frequency list per label, eventually.
I have let you know where in my file system I have put 32 test files ready for you, accompanied by a file specifying their full path and filenames, followed by appropriate labels (specifying when these books were written somewhere in the sixteenth century. Note that there is one label, i.e. 15XX, which specifies the actual year of writing is unknown. The system to be developed should be able to handle this too.
well, amalgamated frequency lists are already taken care of using the --aggregate option. I assume that this option has to be used per label/output-dir in the future. And the same for the --hemp option?
Well an first version is implemented now.
It is installed on violet.
For your example, start it using the parameter --inputfiles
like this:
--inputfiles=TESTKO.DBNL.16E.top32.txt
it will create subdirectories and put statistics there.
Parallelization is weak still, all labels/subdirs are handled after each other. Multiple files in 1 dir CAN be done in parallel.
merged this solution into the master
Hi Ko,
In het kader van TICCLAT zit ik met een probleem. En ik wil graag jouw advies en hulp richting een oplossing.
In TICCLAT willen we dus graag een databank bouwen met zoveel mogelijk gedateerde woordenschat op basis van de diverse Nederlab FoLiA-corpora.
Van bepaalde subcorpora in Nederlab is bekend van welk jaar of welke periode de teksten zijn. Die informatie is echter niet uniform beschikbaar of direct voor mij toegankelijk (bv. de Nederlab metadata databank).
Voor belangrijke subcorpora zoals DBNL en EDBO heb ik echter wel al per boek beschikbaar uit welk jaar ze zijn, in lijstvorm: bestandsnaam - jaar.
Voor een ander groot corpus (de Staten-Generaal Digitaal1814-2013) is die informatie voor een heleboel bestanden aanwezig in de bestandsnaam. Voor andere teksttypes dan weer in de metadata in het FoLiA-bestand. Hiervan zijn dus vrij vlot vergelijkbare lijsten te maken.
Jaarlijsten lijken dus 'de weg te gaan'.
Op basis van alle bestanden uit 1 jaar zouden dus per corpus de frequentielijsten moeten opgebouwd worden. Binnen TICCLAT is afgesproken dat we die ook allemaal met TICCL-unk processen. De clean-files worden uiteindelijk in de databank ingevoerd, per jaar, op basis van het jaartal in hun bestandsnaam.
Nu zijn dit ook vaak grote corpora en zijn het flinke aantallen bestanden. Die wil ik liever niet fysiek verplaatsen, bijvoorbeeld naar directories per jaar.
Mijn eerste idee was een wrapper te bouwen die op basis van zo'n jaarlijst de bestanden voor dat jaar met hun volle bestandsnaam (+ directory path) aanbiedt aan FoLiA-stats. Het resultaat zou dan echter zijn: per bestand voor een bepaald jaar een aparte frequentiefile. Dat is niet de bedoeling, echter. Dat zou het te complex maken en onnodig uitgesplitst over al te veel frequentielijsten. We kunnen weliswaar al frequentielijsten cumuleren, maar dat lijkt hierbij een liever te vermijden extra stap.
Nu is het ook zo dat voor bv. de KB kranten de bestanden wel al netjes per jaar gesorteerd en opgeslagen zijn. Die bestrijken echter de jaren 1618 tot 1940 (zoals opgenomen in Nederlab) en vereisen dus nog steeds honderden malen apart opstarten van FoLiA-stats. (Dit is echter wel al grotendeels gedaan, practisch volledig). Het zou dus fijn zijn als je oplossing ook zou kunnen werken op gedateerde subdirectories, in een lijst beschikbaar gesteld aan het programma: pad - jaartal.
Het is dus ook de bedoeling dat de outputbestanden na zeg maar de prefix het uit de jaarlijst afgeleide jaartal in de bestandsnaam meekrijgen.
Het kan zijn dat ik hier nu eea over het hoofd zie, maar dat kan ik uiteraard later dan vast wel invullen.
Ik zou graag hebben dat je kijkt of het mogelijk is FoLiA-stats (en later ook misschien TICCL-stats) aan deze use case aan te passen. Hartelijk dank, alvast!
Martin