Commit 50207ebd authored by Gerhard Gossen's avatar Gerhard Gossen
Browse files

Add method to extract seed URLs from CDX files

parent baf7c8e9
......@@ -4,3 +4,4 @@ evaluation_topics/
/*.zip
/topics-*
/date-test
/urls/
# Archive Re-Crawler
## Seed URLs
### Wikipedia
TODO ...
### Grep through CDX files
1. Add search keywords to last column of `topics.tsv`
2. Run `java de.l3s.gossen.crawler.tools.QueryKeywordsCreator topics.tsv > patterns` to create query patterns.
This creates OR-patterns for typical German URLs (drop accents, ASCIIfy umlauts, URL-encode special characters).
Spaces are replaced by a `.` to match any character.
3. Copy `patterns` to cluster server.
4. Execute on cluster:
~~~~
for l in `cat patterns`; do
topic=${l%% *}; # note: TAB character
pattern=${l##* }; # note: TAB character
hadoop org.apache.hadoop.examples.Grep /data/ia/derivatives/de/cdx/TA/,/data/ia/derivatives/de/cdx/TB/ /tmp/gossen-urls-${topic}/ \' [^ ]*\\b${pattern}\\b.*?\\s+\';
done
~~~~
5. Copy URL files to folder with crawl specifications:
~~~~
for f in $(xls -d /tmp/gossen-urls-* | awk '{print $8}'); do
n=`echo $f | cut -s -d'-' -f3`;
xcat $f/part-* | awk '{print $2}' > $n.txt;
done
~~~~
6. Run `java de.l3s.gossen.crawler.tools.MergeExternalUrls **specsDirectory**` to create merged crawl specifications.
......@@ -114,4 +114,10 @@ public class ArchiveCrawlSpecification {
&& Objects.equals(keywords, o.keywords) && Objects.equals(defaultLanguage, o.defaultLanguage)
&& Objects.equals(description, o.description) && Objects.equals(correctionFactors, o.correctionFactors);
}
public ArchiveCrawlSpecification withSeedUrls(List<String> newSeedUrls) {
return new ArchiveCrawlSpecification(name, newSeedUrls, referenceDocuments, referenceTime, referenceVectors, keywords,
description, defaultLanguage, correctionFactors);
}
}
......@@ -152,7 +152,7 @@ public class CrawlSpecCreator {
readHeader = true;
continue;
}
String[] parts = line.split("\t", 7);
String[] parts = line.split("\t", 8);
String code = parts[0];
LocalDate from = LocalDate.parse(parts[1], dateFormat);
LocalDate until = LocalDate.parse(parts[2], dateFormat);
......
package de.l3s.gossen.crawler.tools;
import java.io.File;
import java.io.IOException;
import java.util.List;
import com.google.common.io.Files;
import de.l3s.gossen.crawler.ArchiveCrawlSpecification;
import static java.nio.charset.StandardCharsets.UTF_8;
public class MergeExternalUrls {
public static void main(String[] args) throws IOException {
for (String path : args) {
for (File specFile : new File(path).listFiles((dir, name) -> name.endsWith(".json"))) {
ArchiveCrawlSpecification spec = ArchiveCrawlSpecification.readFile(specFile);
String urlsFileName = specFile.getName().replaceFirst("\\.json$", ".txt");
File urlsFile = new File(specFile.getParentFile(), urlsFileName);
if (urlsFile.exists()) {
List<String> newSeedUrls = Files.readLines(urlsFile, UTF_8);
ArchiveCrawlSpecification newSpec = spec.withSeedUrls(newSeedUrls);
String newSpecFileName = specFile.getName().replaceFirst("\\.json", "-seeds.json");
newSpec.writeFile(new File(specFile.getParentFile(), newSpecFileName));
System.out.printf("Updated %s with %d new URLs%n", specFile, newSeedUrls.size());
}
}
}
}
}
package de.l3s.gossen.crawler.tools;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import com.google.common.escape.CharEscaperBuilder;
import com.google.common.escape.Escaper;
import com.google.common.io.Files;
import static com.google.common.net.UrlEscapers.urlPathSegmentEscaper;
import static java.util.stream.Collectors.joining;
import static org.apache.commons.lang3.StringUtils.stripAccents;
public class QueryKeywordsCreator {
private static final Escaper GERMAN_ESCAPER = new CharEscaperBuilder()
.addEscape(' ', ".?")
.addEscape('ä', "ae")
.addEscape('ö', "oe")
.addEscape('ü', "ue")
.addEscape('ß', "ss")
.toEscaper();
public static void main(String[] args) throws IOException {
if (args.length < 1) {
System.out.println("Usage: java " + QueryKeywordsCreator.class.getName() + " topicsFile.tsv [outputDirectory]");
System.exit(1);
}
try (BufferedReader reader = Files.newReader(new File(args[0]), StandardCharsets.UTF_8)) {
boolean readHeader = false;
String line;
while ((line = reader.readLine()) != null) {
if (!readHeader) {
readHeader = true;
continue;
}
String[] parts = line.split("\t", 8);
String code = parts[0];
List<String> keywords = Arrays.asList(parts[7].split(",\\s*"));
Set<String> queryKeywords = new HashSet<>();
for (String keyword : keywords) {
String lcKeyword = keyword.toLowerCase(Locale.GERMAN);
queryKeywords.add(lcKeyword.replaceAll("\\s+", ".?"));
queryKeywords.add(GERMAN_ESCAPER.escape(lcKeyword));
queryKeywords.add(stripAccents(lcKeyword).replaceAll("\\s+", ".?"));
queryKeywords.add(urlPathSegmentEscaper().escape(lcKeyword).replaceAll("\\+", ".?"));
}
String query = queryKeywords.size() == 1 ? queryKeywords.iterator().next()
: queryKeywords.stream().collect(joining(")|(", "(", ")"));
System.out.format("%s\t%s%n", code, query);
}
}
}
}
Code From Until Before After Description Wikipedia
euro 2002-01-01 2002-01-01 P180D P30D Einführung des Euro Euro
wolympics2002 2002-02-08 2002-02-24 P60D P14D Olympische Winterspiele 2002 Olympische_Winterspiele_2002, news:Olympische_Winterspiele_2002
election2002 2002-09-22 2002-09-22 P180D P30D Bundestagswahl 2002 Bundestagswahl_2002, news:Bundestagswahl_2002
iraq 2003-03-20 2013-05-31 P180D P180D Irakkrieg Irakkrieg, Begründung_für_den_Irakkrieg
solympics2004 2004-08-13 2004-08-29 P60D P14D Olypische Sommerspiele 2004 Olympische_Sommerspiele_2004, news:Olympische_Spiele_2004
pope2005 2005-04-02 2005-04-19 P0D P30D Tod von Papst Johannes Paul II, Wahl von Papst Benedikt Johannes_Paul_II., Benedikt_XVI., Konklave_2005
election2005 2005-09-18 2005-09-18 P180D P30D Bundestagswahl 2005 Bundestagswahl_2005, news:Bundestagswahl_2005/06
wolympics2006 2006-02-10 2006-02-26 P60D P14D Olympische Winterspiele 2006 Olympische_Winterspiele_2006, news:Olympische_Winterspiele_2006
worldcup2006 2006-06-09 2006-07-09 P60D P14D Fußball-Weltmeisterschaft 2006 Fußball-Weltmeisterschaft_2006
solympics2008 2008-08-08 2008-08-24 P60D P14D Olypische Sommerspiele 2008 Olympische_Sommerspiele_2008
lhc 2008-09-10 2008-09-10 P30D P30D Inbetriebnahme des LHC Large_Hadron_Collider, news:Large_Hadron_Collider
election2009 2009-09-27 2009-09-27 P180D P30D Bundestagswahl 2009 Bundestagswahl_2009
wolympics2010 2010-02-12 2010-02-28 P60D P14D Olympische Winterspiele 2010 Olympische_Winterspiele_2010, news:Olympische_Winterspiele_2010
vulcano 2010-03-20 2010-04-15 P0D P30D Ausbruch des Vulkan Eyjafjallajökull Ausbruch_des_Eyjafjallajökull_2010, news:Themenportal_Island
eurovision 2010-05-01 2010-05-31 P30D P14D Sieg von Lena Meyer-Landrut beim Eurovision Song Contest 2010 Eurovision_Song_Contest_2010
worldcup2010 2010-06-11 2010-07-11 P60D P14D Fußball-Weltmeisterschaft 2010 Fußball-Weltmeisterschaft_2010
loveparade 2010-07-24 2010-07-24 P0D P30D Unglück bei der Loveparade Unglück_bei_der_Loveparade_2010
sarrazin 2010-01-01 2010-12-31 P0D P90D Buch von Thilo Sarrazin Deutschland_schafft_sich_ab
nsu 2011-01-01 2012-09-30 P0D P730D NSU NSU-Morde, Nationalsozialistischer_Untergrund, Untersuchungsausschuss_zur_Terrorgruppe_Nationalsozialistischer_Untergrund, NSU-Prozess
guttenberg 2011-02-12 2011-10-31 P0D P30D Guttenberg Plagiatsaffäre_Guttenberg
fukushima 2011-03-11 2011-03-11 P0D P180D Fukushima Nuklearkatastrophe_von_Fukushima
wulff 2011-12-01 2012-02-12 P0D P90D Rücktritt Christian Wulff Wulff-Affäre
stuttgart 2011-01-01 2011-12-31 P30D P90D Protest gegen Stuttgart 21 Stuttgart_21, Protest_gegen_Stuttgart_21, Geschichte_von_Stuttgart_21, Kosten_und_Finanzierung_von_Stuttgart_21, Schlichtung_zu_Stuttgart_21, Volksabstimmung_zu_Stuttgart_21
costa 2012-01-13 2012-01-13 P0D P30D Leck des Kreuzfahrschiffs Costa Concordia Costa_Concordia
solympics2012 2012-06-25 2012-08-12 P60D P14D Olypische Sommerspiele 2012 Olympische_Sommerspiele_2012
esm 2012-09-27 2012-09-27 P90D P90D Europäischer Stabilitätsmechanismus Europäischer_Stabilitätsmechanismus
pope2013 2013-02-28 2013-03-15 P0D P30D Papstwechsel (Benedikt → Franziskus) Franziskus_(Papst), Konklave_2013, Benedikt_XVI.
flood 2013-05-01 2013-06-30 P14D P30D Hochwasser 2013 Hochwasser_in_Mitteleuropa_2013
snowden 2013-06-01 2013-06-30 P0D P730D Edward Snowden Edward_Snowden, Globale_Überwachungs-_und_Spionageaffäre
election2013 2013-09-22 2013-09-22 P180D P30D Bundestagswahl 2013 Bundestagswahl_2013
wolympics2014 2014-02-07 2014-02-23 P60D P14D Olympische Winterspiele 2014 Olympische_Winterspiele_2014
worldcup2014 2014-06-12 2014-07-13 P60D P14D Fußball-Weltmeisterschaft 2014 Fußball-Weltmeisterschaft_2014, Finale_der_Fußball-Weltmeisterschaft_2014
Code From Until Before After Description Wikipedia Search keywords
euro 2002-01-01 2002-01-01 P180D P30D Einführung des Euro Euro euro
wolympics2002 2002-02-08 2002-02-24 P60D P14D Olympische Winterspiele 2002 Olympische_Winterspiele_2002, news:Olympische_Winterspiele_2002 olympia, olympische winterspiele
election2002 2002-09-22 2002-09-22 P180D P30D Bundestagswahl 2002 Bundestagswahl_2002, news:Bundestagswahl_2002, Bundestagswahl bundestagswahl
iraq 2003-03-20 2013-05-31 P180D P180D Irakkrieg Irakkrieg, Begründung_für_den_Irakkrieg irak, irakkrieg
solympics2004 2004-08-13 2004-08-29 P60D P14D Olypische Sommerspiele 2004 Olympische_Sommerspiele_2004, news:Olympische_Spiele_2004 olympia, olympische spiele
pope2005 2005-04-02 2005-04-19 P0D P30D Tod von Papst Johannes Paul II, Wahl von Papst Benedikt Johannes_Paul_II., Benedikt_XVI., Konklave_2005 johannes paul, benedikt, papst, konklave
election2005 2005-09-18 2005-09-18 P180D P30D Bundestagswahl 2005 Bundestagswahl_2005, news:Bundestagswahl_2005/06 bundestagswahl
wolympics2006 2006-02-10 2006-02-26 P60D P14D Olympische Winterspiele 2006 Olympische_Winterspiele_2006, news:Olympische_Winterspiele_2006 olympia, olympische winterspiele
worldcup2006 2006-06-09 2006-07-09 P60D P14D Fußball-Weltmeisterschaft 2006 Fußball-Weltmeisterschaft_2006 wm
solympics2008 2008-08-08 2008-08-24 P60D P14D Olypische Sommerspiele 2008 Olympische_Sommerspiele_2008 olympia, olympische spiele
lhc 2008-09-10 2008-09-10 P30D P30D Inbetriebnahme des LHC Large_Hadron_Collider, news:Large_Hadron_Collider lhc, hadron
election2009 2009-09-27 2009-09-27 P180D P30D Bundestagswahl 2009 Bundestagswahl_2009 bundestagswahl
wolympics2010 2010-02-12 2010-02-28 P60D P14D Olympische Winterspiele 2010 Olympische_Winterspiele_2010, news:Olympische_Winterspiele_2010 olympia, olympische winterspiele
vulcano 2010-03-20 2010-04-15 P0D P30D Ausbruch des Vulkan Eyjafjallajökull Ausbruch_des_Eyjafjallajökull_2010, news:Themenportal_Island eyjafjallajökull
eurovision 2010-05-01 2010-05-31 P30D P14D Sieg von Lena Meyer-Landrut beim Eurovision Song Contest 2010 Eurovision_Song_Contest_2010 eurovision, esc, lena, landrut
worldcup2010 2010-06-11 2010-07-11 P60D P14D Fußball-Weltmeisterschaft 2010 Fußball-Weltmeisterschaft_2010 wm
loveparade 2010-07-24 2010-07-24 P0D P30D Unglück bei der Loveparade Unglück_bei_der_Loveparade_2010 loveparade
sarrazin 2010-01-01 2010-12-31 P0D P90D Buch von Thilo Sarrazin Deutschland_schafft_sich_ab sarrazin
nsu 2011-01-01 2012-09-30 P0D P730D NSU NSU-Morde, Nationalsozialistischer_Untergrund, Untersuchungsausschuss_zur_Terrorgruppe_Nationalsozialistischer_Untergrund, NSU-Prozess nsu
guttenberg 2011-02-12 2011-10-31 P0D P30D Guttenberg Plagiatsaffäre_Guttenberg guttenberg, plagiat
fukushima 2011-03-11 2011-03-11 P0D P180D Fukushima Nuklearkatastrophe_von_Fukushima fukushima
wulff 2011-12-01 2012-02-12 P0D P90D Rücktritt Christian Wulff Wulff-Affäre wulff
stuttgart 2011-01-01 2011-12-31 P30D P90D Protest gegen Stuttgart 21 Stuttgart_21, Protest_gegen_Stuttgart_21, Geschichte_von_Stuttgart_21, Kosten_und_Finanzierung_von_Stuttgart_21, Schlichtung_zu_Stuttgart_21, Volksabstimmung_zu_Stuttgart_21 Stuttgart 21, s21
costa 2012-01-13 2012-01-13 P0D P30D Leck des Kreuzfahrschiffs Costa Concordia Costa_Concordia costa concordia
solympics2012 2012-06-25 2012-08-12 P60D P14D Olypische Sommerspiele 2012 Olympische_Sommerspiele_2012 olympia, olympische spiele
esm 2012-09-27 2012-09-27 P90D P90D Europäischer Stabilitätsmechanismus Europäischer_Stabilitätsmechanismus esm, europäischer stabilitätsmechanismus
pope2013 2013-02-28 2013-03-15 P0D P30D Papstwechsel (Benedikt → Franziskus) Franziskus_(Papst), Konklave_2013, Benedikt_XVI. franziskus, benedikt, konklave
flood 2013-05-01 2013-06-30 P14D P30D Hochwasser 2013 Hochwasser_in_Mitteleuropa_2013 hochwasser
snowden 2013-06-01 2013-06-30 P0D P730D Edward Snowden Edward_Snowden, Globale_Überwachungs-_und_Spionageaffäre snowden, nsa
election2013 2013-09-22 2013-09-22 P180D P30D Bundestagswahl 2013 Bundestagswahl_2013 bundestagswahl
wolympics2014 2014-02-07 2014-02-23 P60D P14D Olympische Winterspiele 2014 Olympische_Winterspiele_2014 olympia, olympische winterspiele
worldcup2014 2014-06-12 2014-07-13 P60D P14D Fußball-Weltmeisterschaft 2014 Fußball-Weltmeisterschaft_2014, Finale_der_Fußball-Weltmeisterschaft_2014 wm
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment