This appendix contains the code used to fetch the literature review data using scopus API as well as the prompt used to categorize the papers.
require 'typhoeus'
require 'json'
require 'bibtex'
require 'active_support'
require 'active_support/core_ext'
API_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
API_URL = "https://api.elsevier.com/"
DOI_BASE = "https://doi.org/"
DEFAULT_OPTIONS = {
method: :get,
headers: {
'Accept': 'application/json',
'X-ELS-APIKey': API_KEY
}
}
BIBTEX_TYPES = {
"Conference Paper" => :inproceedings,
"Article" => :article,
"Editorial" => :article,
"Note" => :article,
"Review" => :article,
"Chapter" => :inbook,
"Article in Press" => :article,
"Short Survey" => :article,
"Book" => :book
}
@search_string = 'KEY ("computational creativity")'
@bib = BibTeX::Bibliography.new
@urls = []
def make_keyword_request(sstring, cursor = 0)
options = DEFAULT_OPTIONS.dup
options[:params] = {
query: sstring,
field: "prism:url",
count: 25,
start: cursor
}
request = Typhoeus::Request.new(api("content/search/scopus"), options)
request.on_complete do |response|
if response.success?
parsed_response = JSON.parse(response.body)["search-results"]
if parsed_response["entry"]
parsed_response["entry"].each do |result|
puts result["prism:url"]
@urls.push result["prism:url"]
end
make_keyword_request(sstring, cursor + 25).run
end
elsif response.timed_out?
# aw hell no
puts "got a time out"
elsif response.code == 0
# Could not get an http response, something's wrong.
puts response.return_message
else
# Received a non-successful http response.
puts "HTTP request failed: " + response.code.to_s
puts response.body
end
end
request
end
def api(path)
API_URL + path
end
def make_abstract_request(url)
puts url
options = DEFAULT_OPTIONS.dup
options[:params] = {
view: "META_ABS",
apiKey: API_KEY
}
request = Typhoeus::Request.new(url, options)
request.on_complete do |response|
if response.success?
parsed_response = JSON.parse(response.body)["abstracts-retrieval-response"]
coredata = parsed_response["coredata"]
puts "Found #{coredata["subtypeDescription"]}"
puts coredata
if is_valid_record(coredata)
puts "Valid record"
entry = {}
entry[:bibtex_type] = BIBTEX_TYPES[coredata["subtypeDescription"]]
entry[:issn] = coredata["prism:issn"]
entry[:journal] = coredata["prism:publicationName"]
entry[:author] = format_authors(coredata["dc:creator"]["author"])
entry[:abstract] = coredata["dc:description"]
date = Date.parse(coredata["prism:coverDate"])
entry[:year] = date.year
entry[:month] = date.month
entry[:title] = coredata["dc:title"]
entry[:volume] = coredata["prism:volume"]
entry[:number] = coredata["issueIdentifier"]
entry[:pages] = "#{coredata["prism:startingPage"]}--#{coredata["prism:endingPage"]}"
entry[:citedby] = coredata["citedby-count"]
if coredata["prism:doi"]
entry[:doi] = coredata["prism:doi"]
entry[:url] = DOI_BASE + coredata["prism:doi"]
end
entry[:eid] = coredata["eid"]
entry[:publisher] = coredata["dc:publisher"]
#entry[:file] = build_file_url(coredata["dc:identifier"])
if parsed_response["authkeywords"]
if parsed_response["authkeywords"]["author-keyword"].instance_of? Array
entry[:keywords] = parsed_response["authkeywords"]["author-keyword"].map {|key| key["$"].titlecase.strip }.join(", ")
else
entry[:keywords] = parsed_response["authkeywords"]["author-keyword"]["$"].titlecase.strip
end
end
@bib << BibTeX::Entry.new(entry)
else
puts "Invalid record!"
puts url
puts "Continuing"
end
elsif response.timed_out?
# aw hell no
puts "got a time out"
elsif response.code == 0
# Could not get an http response, something's wrong.
puts response.return_message
else
# Received a non-successful http response.
puts "major fail"
puts response.body
puts "HTTP request failed: " + response.code.to_s
end
end
request
end
def format_authors(authors)
authors.map do |author|
"#{author['ce:surname']}, #{author['ce:given-name']}"
end.join(" and ")
end
def is_valid_record(data)
data["dc:creator"] && BIBTEX_TYPES[data["subtypeDescription"]]
end
make_keyword_request(@search_string).run
#urls = File.open("artificial_creativity.txt").read
@urls.each_with_index do | url , i |
puts "Querying #{i+1} of #{@urls.length}"
make_abstract_request(url.strip).run
end
#make_abstract_request("https://api.elsevier.com/content/abstract/scopus_id/84900523833").run
#print @bib.to_s
File.write("#{@search_string.remove('"').squish}.bib", @bib.to_s)
A media is intended as the field of application addressed by the paper in question.
The theoretical scope of a paper is intended as the focus of the paper's research question.
The computational approach is intended as the broad category of algorithms and implementations discussed in the paper.
I need your help identifying the domain of this paper:
Title: {title}
Abstract: {abstract}
Journal: {journal}
Please assign it to one of the following media:
- No medium
- Visual, images and movies
- Culinary recipes
- Design, Urban Design, Architecture
- Writing, narrative and language
- Music and musical composition
- Game design
- Concepts
- Multi-modal
Please also help me assign this paper to one of the following theoretical scopes based on the
research question that the paper is addressing:
- Evaluation: the paper discusses the evaluation of creative artifacts
- Theory: the paper discusses a particular theory or hypothesis about creativity
- System: the paper presents a technical implementation of a specific system or algorithm developed by the authors
- Other: the scope of the paper does not fit any of the other categories
Please also assign one of these computational approaches:
- Rule based: these are non-data driven methods that follow deterministic rules and definitions, such as expert systems
- Evolutionary algorithms: genetic algorithms and other evolutionary methods
- Data driven: this includes Deep learning, machine learing and other methods that are based on datasets
- Other: does not belong to any of the above or the approach is not clearly specified
Return the domain and the explanation of your choice in this format:
[ the media of the paper] | [ the theoretical scope ] | [the computational approach] | [ your explanation]
for example:
Multi-modal | Evaluation of creativity | Data driven | This paper discusses [...] so it belongs to [...]
Follow this format strictly and do not add any other words or prefix such as "Scope:" or "Medium:" before the domain and category you pick.
The following table displays the 25 papers with most citations in the corpus. The number of citations was not considered in the systematic literature review, because of the possible bias it may introduce. All topics have been considered as a equally important regardless of whether the paper was cited or not. Citations also are depended on publication date, which may yield further bias in the analysis.
| Author (Year) | Paper Title | Citations | Research Question |
| (Ritchie 2007) | Some empirical criteria for attributing creativity to a computer program | 193 | Is it possible to empirically assess whether a computer program is capable of creative activity? |
| (Jordanous 2012) | A Standardised Procedure for Evaluating Creative Systems: Computational Creativity Evaluation Based on What it is to be Creative | 129 | How can we evaluate the creativity of computational systems? |
| (Wiggins 2006a) | Searching for computational creativity | 110 | How can traditional AI search methods be used to explore the relationship between Boden’s account of creativity and Wiggins’ formalisation of it? |
| (Machado 2002) | All the truth about NEvAr | 109 | How can Evolutionary Art Tools, such as NEvAr, be used to generate images and what are the benefits of using such tools? |
| (Boden 2009) | What is generative art? | 91 | What are the major categories of generative art, and what are the appropriate aesthetic criteria and locus of creativity for each category? |
| (Neves et al. 2007) | The halt condition in genetic programming | 79 | What is the role of divergence and convergence in creative processes, and how can they be implemented within creativity programs in the Genetic or Evolutionary Programming paradigm to address the Halt Condition in Genetic Programming? |
| (Jennings 2010) | Developing creativity: Artificial barriers in artificial intelligence | 55 | How can developers of creative artificial intelligence systems convincingly argue that their software is more than just an extension of their own creativity? |
| (Davis 2016) | Empirically studying participatory sense-making in abstract drawing with a co-creative cognitive agent | 54 | How can participatory sense-making be used to model and understand open-ended collaboration between humans and computers in the context of abstract drawing? |
| (Kowaliw 2012) | Promoting creative design in interactive evolutionary computation | 52 | How can creative design be promoted in interactive evolutionary computation? |
| (Eppe 2018) | A computational framework for conceptual blending | 51 | How can modern answer set programming methods and optimality principles be used to develop a computational framework for conceptual blending? |
| (L. Chen 2019) | An artificial intelligence based data-driven approach for design ideation | 49 | How can artificial intelligence and data mining techniques be used to enhance design ideation? |
| (Peinado 2006) | Evaluation of automatic generation of basic stories | 47 | How can the utility of an automatic story generation system be measured in terms of quality and originality of the generated artifact? |
| (Olteţeanu 2015) | ComRAT-C: A computational compound Remote Associates Test solver based on language data and its comparison to human performance | 44 | Can a computational compound Remote Associates Test solver based on language data be used to solve RAT queries and how does it compare to human performance? |
| (Yang 2020) | On the evaluation of generative models in music | 43 | How can generative music systems be evaluated and compared in a reliable, valid, and reproducible way? |
| (Sturm 2019) | Machine learning research that matters for music creation: A case study | 41 | How can machine learning be applied to music creation in a way that is useful and impactful for real-world practitioners? |
| (Olteţeanu 2016) | Object replacement and object composition in a creative cognitive system. Towards a computational solver of the Alternative Uses Test | 41 | How can object replacement and object composition be used to create a creative cognitive system that can solve the Alternative Uses Test? |
| (Liapis 2019) | Orchestrating game generation | 39 | How can a computational process orchestrate the various computational creators of different creative domains in order to generate a digital game with desired functional and aesthetic characteristics? |
| (Colton 2008) | Emotionally aware automated portrait painting | 38 | How can a machine vision system and a non-photorealistic rendering (NPR) system be combined to automatically produce portraits which heighten the emotion of the sitter? |
| (Cook 2017) | The ANGELINA videogame design system-part i | 37 | How can cooperative coevolution be used to automate game design and produce content that complements each other? |
| (Grace 2015) | Data-intensive evaluation of design creativity using novelty, value, and surprise | 37 | How can data-intensive methods be used to evaluate the creativity of a new design in terms of novelty, value, and surprise? |
| (al-Rifaie 2012) | Creativity and Autonomy in Swarm Intelligence Systems | 37 | How can swarm intelligence algorithms be used to create novel drawings of an input image, and what implications does this have for creativity and autonomy? |
| (Jordanous 2016) | Four PPPPerspectives on computational creativity in theory and in practice | 34 | How can the Four Ps of creativity (Person/Producer, Product, Process and Press/Environment) be used to take a broader perspective on computational creativity in theory and in practice? |
| (Köbis 2021) | Artificial intelligence versus Maya Angelou: Experimental evidence that people cannot differentiate AI-generated from human-written poetry | 33 | Can people distinguish and prefer algorithm-generated versus human-written text? |
| (Saunders 2012) | Towards Autonomous Creative Systems: A Computational Approach | 32 | How can autonomous computational creativity be developed to model personal motivations, social interactions, and the evolution of domains? |
| (De Nicola 2019) | Creative design of emergency management scenarios driven by semantics: An application to smart cities | 31 | How can semantics-based techniques be used to support the creative design of emergency management scenarios in smart cities? |
| (J. R. Smith 2017) | Harnessing A.I. for augmenting creativity: Application to movie trailer creation | 30 | How can Artificial Intelligence (AI) be used to augment creativity in the context of movie trailer creation? |
| (Pasquier 2016) | An introduction to musical metacreation | 30 | What are the challenges and opportunities for the field of musical metacreation? |
| (Carnovalini 2020) | Computational Creativity and Music Generation Systems: An Introduction to the State of the Art | 29 | What are the current state-of-the-art systems for Computational Creativity and Music Generation, and what open challenges remain to be addressed? |
| (Lamb 2018) | Evaluating computational creativity: An interdisciplinary tutorial | 29 | How can computational creativity be evaluated using interdisciplinary theories of creativity? |
| (Deterding 2017) | Mixed-initiative creative interfaces | 29 | How can mixed-initiative creative interfaces be designed to broaden and amplify creative capacity for all? |