diff --git a/app.py b/app.py index d69cfcb2e51003f25226f65f3a130a706b972f7d..82ec4cc13896483b4f854439b72ac9b418a7109c 100644 --- a/app.py +++ b/app.py @@ -182,7 +182,7 @@ def index(): softwares = Software.query.all() for software_tool in softwares: template.stream(software=software_tool).dump( - '../digitale-Methoden-wiki/Tool_' + software_tool.name.replace(' ', '') + '.asciidoc', encoding='utf-8') + '../digitale-Methoden-wiki/Tool_' + software_tool.name.replace(' ', '').replace('/', '') + '.asciidoc', encoding='utf-8') softwareincategory = [] software_categorys = SoftwareCategory.query.all() @@ -435,137 +435,140 @@ Furthermore the server-client-model is the established communication paradigms f description="Analyse statistical significant co-occurence of words in different contextual units.", parent=method3) db.session.add(method4) - method3 = Method(id=32,name="classification/machine learning", + method4 = Method(id=32,name="context volatility", + description="'Analyse contextual change for certain words over a period of time.'(<<Niekler_etal2018>>,1316)", + parent=method3) + db.session.add(method4) + method3 = Method(id=33,name="classification/machine learning", description="Various techniques to (semi-)automatically identify specific classes. ", parent=method2) db.session.add(method3) - method4 = Method(id=33,name="supervised classification", + method4 = Method(id=34,name="supervised classification", description="Use given training examples in order to classify certain entities.", parent=method3) db.session.add(method4) - method4 = Method(id=34,name="latent semantic analysis", + method4 = Method(id=35,name="latent semantic analysis", description="'The basic idea of latent semantic analysis (LSA) is, that text do have a higher order (=latent semantic) structure which, however, is obscured by word usage (e.g. through the use of synonyms or polysemy). By using conceptual indices that are derived statistically via a truncated singular value decomposition (a two-mode factor analysis) over a given document-term matrix, this variability problem can be overcome.'(link:https://cran.r-project.org/web/packages/lsa/lsa.pdf[CRAN-R])", parent=method3) db.session.add(method4) - method4 = Method(id=35,name="topic modelling", + method4 = Method(id=36,name="topic modelling", description="Probabilistic models to infer semantic clusters. See especially <<Papilloud_etal2018>>.", parent=method3) db.session.add(method4) - method5 = Method(id=36,name="latent dirichlet allocation", + method5 = Method(id=37,name="latent dirichlet allocation", description="""'The application of LDA is based on three nested concepts: the text collection to be modelled is referred to as the corpus; one item within the corpus is a document, with words within a document called terms.(...) + The aim of the LDA algorithm is to model a comprehensive representation of the corpus by inferring latent content variables, called topics. Regarding the level of analysis, topics are heuristically located on an intermediate level between the corpus and the documents and can be imagined as content-related categories, or clusters. (...) Since topics are hidden in the first place, no information about them is directly observable in the data. The LDA algorithm solves this problem by inferring topics from recurring patterns of word occurrence in documents.'(<<Maier_etal2018>>,94)""", parent=method4) db.session.add(method5) - method5 = Method(id=37,name="non-negative-matrix-factorization", + method5 = Method(id=38,name="non-negative-matrix-factorization", description="Inclusion of non-negative constraint.", parent=method4) db.session.add(method5) - method5 = Method(id=38,name="structural topic modelling", + method5 = Method(id=39,name="structural topic modelling", description="Inclusion of meta-data. Refer especially to <<roberts2013>>.", parent=method4) db.session.add(method5) - method4 = Method(id=39,name="sentiment analysis", + method4 = Method(id=40,name="sentiment analysis", description="'Subjectivity and sentiment analysis focuses on the automatic identification of private states, such as opinions, emotions, sentiments, evaluations, beliefs, and speculations in natural language. While subjectivity classification labels text as either subjective or objective, sentiment classification adds an additional level of granularity, by further classifying subjective text as either positive, negative, or neutral.' (<<Ignatow_etal2017>> pp. 148)", parent=method3) db.session.add(method4) - method4 = Method(id=40,name="automated narrative, argumentative structures, irony, metaphor detection/extraction", + method4 = Method(id=41,name="automated narrative, argumentative structures, irony, metaphor detection/extraction", description="For automated narrative methapor analysis see (<<Ignatow_etal2017>>, 89-106. For argumentative structures(Task: Retrieving sentential arguments for any given controversial topic) <<Stab_etal2018>> .Refer for a current overview <<Cabrio2018>>.", parent=method3) db.session.add(method4) - method3 = Method(id=41,name="network analysis/modelling", + method3 = Method(id=42,name="network analysis/modelling", description="Generate networks out of text/relationships between text.", parent=method2) db.session.add(method3) - method4 = Method(id=42, name="knowledge graph construction", + method4 = Method(id=43, name="knowledge graph construction", description="Modelling entities and their relationships.", parent=method3) db.session.add(method4) - - method2 = Method(id=43,name="data visualization", + method2 = Method(id=44,name="data visualization", description="Visualize the mined informations.", parent=method1) db.session.add(method2) - method3 = Method(id=44,name="word relationships", + method3 = Method(id=45,name="word relationships", description="", parent=method2) db.session.add(method3) - method3 = Method(id=45,name="networks", + method3 = Method(id=46,name="networks", description="", parent=method2) db.session.add(method3) - method3 = Method(id=46,name="geo-referenced", + method3 = Method(id=47,name="geo-referenced", description="", parent=method2) db.session.add(method3) - method3 = Method(id=47,name="dynamic visualizations", - description="Visualizations with user interaction or time frames.", + method3 = Method(id=48,name="dynamic visualizations", + description="Visualizations with user interaction or animations.", parent=method2) db.session.add(method3) - method1 = Method(id=48,name="science practice", + method1 = Method(id=49,name="science practice", description="General science practice", parent=method) db.session.add(method1) - method2 = Method(id=49,name="digital research design", + method2 = Method(id=50,name="digital research design", description="New possibilities in surveys or data aquisition techniques.", parent=method1) db.session.add(method2) - method3 = Method(id=50,name="ecological momentary assessments (EMA)/Experience Sampling Method (ESM)", + method3 = Method(id=51,name="ecological momentary assessments (EMA)/Experience Sampling Method (ESM)", description="Mostly equivalent. EMA focusses on medical questions or measurements in a natural environment; ESM more on subjective Questions in the real life. Four characteristics: 1) data collection in natural environments 2) Focussing on near events/impressions/actions 3) questions triggered randomly or event-based 4) multiple questions over a certain period of time [Citation after Stone and Shiffmann 1994] (<<Salganik2018>>,109)", parent=method2) db.session.add(method3) - method3 = Method(id=51,name="wiki surveys", + method3 = Method(id=52,name="wiki surveys", description="Guide open-answer questions with user feedback.", parent=method2) db.session.add(method3) - method3 = Method(id=52,name="survey data linked to big data sources", + method3 = Method(id=53,name="survey data linked to big data sources", description="", parent=method2) db.session.add(method3) - method4 = Method(id=53,name="Enriched asking", + method4 = Method(id=54,name="Enriched asking", description="", parent=method3) db.session.add(method4) - method4 = Method(id=54,name="Amplified asking", + method4 = Method(id=55,name="Amplified asking", description="", parent=method3) db.session.add(method4) - method2 = Method(id=55,name="collaborative work", + method2 = Method(id=56,name="collaborative work", description="", parent=method1) db.session.add(method2) - method3 = Method(id=56,name="open call projects", + method3 = Method(id=57,name="open call projects", description="(e.g. annotation).", parent=method2) db.session.add(method3) - method3 = Method(id=57,name="distributed data collection", + method3 = Method(id=58,name="distributed data collection", description="", parent=method2) db.session.add(method3) - method2 = Method(id=58,name="digital communication", + method2 = Method(id=59,name="digital communication", description="", parent=method1) db.session.add(method2) - method1 = Method(id=59,name="statistical modeling", + method1 = Method(id=60,name="statistical modeling", description="", parent=method) db.session.add(method1) - method2 = Method(id=60,name="regression analysis", + method2 = Method(id=61,name="regression analysis", description="", parent=method1) db.session.add(method2) - method2 = Method(id=61,name="time-series analysis", + method2 = Method(id=62,name="time-series analysis", description="", parent=method1) db.session.add(method2) - method2 = Method(id=62,name="agent-based modeling", + method2 = Method(id=63,name="agent-based modeling", description="", parent=method1) db.session.add(method2) - method1 = Method(id=63,name="social complexity modeling/ social simulation", + method1 = Method(id=64,name="social complexity modeling/ social simulation", description="", parent=method) db.session.add(method1) - method2 = Method(id=64,name="nowcasting", + method2 = Method(id=65,name="nowcasting", description="Using methods to predict the future for estimation of current values. (Example: predict influenza epidemiology combining CDC Data and Google Trends(<<Salganik2018>>,46–50)).", parent=method1) db.session.add(method2) @@ -603,8 +606,9 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c reference = Reference(name="Stab_etal2018", cited="Stab, C., Daxenberger, J., Stahlhut, C., Miller, T., Schiller, B., Tauchmann, C., . . . Gurevych, I. (2018). ArgumenText: Searching for Arguments in Heterogeneous Sources. In Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Demonstrations (pp. 21–25).") db.session.add(reference) - - + reference = Reference(name="Niekler_etal2018", + cited="Niekler, A., Bleier, A., Kahmann, C., Posch, L., Wiedemann, G., Erdogan, K., . . . Strohmaier, M. (2018). ILCM - A Virtual Research Infrastructure for Large-Scale Qualitative Data. In Proceedings of the Eleventh International Conference on Language Resources and Evaluation (LREC-2018). European Language Resource Association. Retrieved from http://aclweb.org/anthology/L18-1209") + db.session.add(reference) lic_unknown = License(name="Unknown") lic_bsd = License(name="BSD") @@ -617,12 +621,6 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c lic_byncnd3 = License(name="CC BY-NC-ND", version="3.0") lic_ccdl = License(name="CCDL", version="1.0") lic_prop = License(name="Proprietary") - db.session.add(lic_gpl3) - db.session.add(lic_gpl3) - db.session.add(lic_agpl3) - db.session.add(lic_apache2) - db.session.add(lic_mit) - db.session.add(lic_prop) prol_r = Programminglanguage(name="R") prol_py = Programminglanguage(name="Python") @@ -633,13 +631,7 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c prol_jupyternb = Programminglanguage(name="Jupyter Notebook") prol_js = Programminglanguage(name="Javascript") prol_c = Programminglanguage(name="C") - db.session.add(prol_r) - db.session.add(prol_py) - db.session.add(prol_java) - db.session.add(prol_objc) - db.session.add(prol_jupyternb) - db.session.add(prol_js) - db.session.add(prol_c) + prol_ruby = Programminglanguage(name="Ruby") cat_tracking = SoftwareCategory(name="user-consented tracking", short_description="Collection of sensor data on (mobile) devices in accordance with data protection laws.") cat_scraping = SoftwareCategory(name="scraping", short_description="Tools in the area of web-scraping") @@ -661,13 +653,9 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c cat_ocr = SoftwareCategory(name="optical character recognition (OCR)",short_description="OCR is the mechanical or electronic conversion of images of typed, handwritten or printed text into machine-encoded text.") cat_oe = SoftwareCategory(name="online experiments", short_description="") cat_agent = SoftwareCategory(name="Agent-based modeling", short_description="") + cat_jour = SoftwareCategory(name="Investigative Journalism", short_description="") cat_misc = SoftwareCategory(name="miscellaneous", short_description="") - - db.session.add(cat_tracking) - db.session.add(cat_scraping) - db.session.add(cat_int) - tool = Software(name="AWARE", short_description="'AWARE is an Android framework dedicated to instrument, infer, log and share mobile context information, for application developers, researchers and smartphone users. AWARE captures hardware-, software-, and human-based data. The data is then analyzed using AWARE plugins. They transform data into information you can understand.' link:http://www.awareframework.com/what-is-aware/[Source, visited: 27.02.2019]", developer="", @@ -1468,6 +1456,30 @@ The aim of the LDA algorithm is to model a comprehensive representation of the c db.session.add(Link(software=tool, type="website", url="http://ccl.northwestern.edu/netlogo/", comment="")) db.session.add(Link(software=tool, type="repository", url="https://github.com/NetLogo/NetLogo", comment="")) + tool = Software(name="DocumentCloud", + short_description="'DocumentCloud is a platform founded on the belief that if journalists were more open about their sourcing, the public would be more inclined to trust their reporting. The platform is a tool to help journalists share, analyze, annotate and, ultimately, publish source documents to the open web.' link:https://www.documentcloud.org/about[Source, visited: 04.03.2019]", + developer="Ted Han and Aron Pilhofer", + maintainer="Ted Han and Aron Pilhofer", + softwarecategory=cat_jour, + architecture="standalone", + license=lic_mit, + programminglanguages=[prol_ruby]) + db.session.add(tool) + db.session.add(Link(software=tool, type="website", url="https://www.documentcloud.org/", comment="")) + db.session.add(Link(software=tool, type="repository", url="https://github.com/documentcloud/documentcloud", comment="")) + + tool = Software(name="NEW/S/LEAK", + short_description="'DocumentCloud is a platform founded on the belief that if journalists were more open about their sourcing, the public would be more inclined to trust their reporting. The platform is a tool to help journalists share, analyze, annotate and, ultimately, publish source documents to the open web.' link:https://www.documentcloud.org/about[Source, visited: 04.03.2019]", + developer="Gregor Wiedemann and Seid Muhie Yimam and Chris Biemann", + maintainer="Gregor Wiedemann and Seid Muhie Yimam and Chris Biemann", + softwarecategory=cat_jour, + architecture="standalone", + license=lic_agpl3, + programminglanguages=[prol_ruby]) + db.session.add(tool) + db.session.add(Link(software=tool, type="website", url="https://www.documentcloud.org/", comment="")) + db.session.add(Link(software=tool, type="repository", url="https://github.com/documentcloud/documentcloud", comment="")) + tool = Software(name="spades", short_description="", developer="", diff --git a/sample_db.sqlite b/sample_db.sqlite index 5062764ab07c1a65ebd949829019a7a2a00a8134..8cd791705c5b26174d75e40e411ddc71e54c423e 100644 Binary files a/sample_db.sqlite and b/sample_db.sqlite differ diff --git a/templates/export/softwares.jinja2 b/templates/export/softwares.jinja2 index c355f742873a229bb605793ae74311eb16663d6d..540a9183e397b174d37c38538f2c60e376d99726 100644 --- a/templates/export/softwares.jinja2 +++ b/templates/export/softwares.jinja2 @@ -8,6 +8,6 @@ == {{ softwarecategory[0].name }} _{{softwarecategory[0].short_description}}_ {% for software in softwarecategory[1] %} -link:Tool_{{ software.name.replace(' ','') }}[{{ software.name }}] ({% for link in software.links %}link:{{link.url}}[{{link.type}}{{'-'+link.comment if link.comment else '' }}] {% endfor %}):: {{software.short_description}} < {{software.license}} | {{software.architecture}} | {% for prol in software.programminglanguages %}{{prol.name}} {% endfor %} > +link:Tool_{{ software.name.replace(' ', '').replace('/', '') }}[{{ software.name }}] ({% for link in software.links %}link:{{link.url}}[{{link.type}}{{'-'+link.comment if link.comment else '' }}] {% endfor %}):: {{software.short_description}} < {{software.license}} | {{software.architecture}} | {% for prol in software.programminglanguages %}{{prol.name}} {% endfor %} > {% endfor %} {% endfor %} \ No newline at end of file