This document is the user's guide for version 2.2.x of the MIT Java Wordnet Interface (JWI). JWI is a Java library that allows accessing the Wordnet electronic dictionary by providing API calls to retrieve words, synsets, and morphological exceptions. It also allows following lexical and semantic pointers. The guide provides an overview of JWI's capabilities and examples of basic usage, loading Wordnet fully into memory for improved performance, and answers to frequently asked questions.
This document provides an overview of sqlmap, an open source penetration testing tool that automates the detection and exploitation of SQL injection vulnerabilities. It discusses the creators and history of the tool, its main features like database enumeration and takeover functionalities, and techniques for detecting different types of SQL injections like blind, error-based, union queries, and time delays. Examples of how each technique works are also provided.
An object is an instance of a class that encapsulates state and behavior. A class defines the common attributes and behaviors of objects. Instance variables store the state of an object, and methods define the behaviors. Methods allow classes to hide implementation details and promote code reuse through polymorphism.
This document discusses WordNet and how it can be used with NLTK and Python. It provides examples of accessing WordNet synsets and lexical relations. Some key points covered include:
- WordNet is a lexical database that contains words and relationships between words like synonyms, hypernyms, and antonyms.
- The nltk.corpus.wordnet module can be used to access WordNet data in Python.
- Functions like synsets, lemma_names, and lemmas are used to retrieve information about synsets and their members.
- Relationships like hyponyms, hypernyms, meronyms, and entailments connect synsets and can be navigated.
- Path similarity measures
IJRET : International Journal of Research in Engineering and Technology is an international peer reviewed, online journal published by eSAT Publishing House for the enhancement of research in various disciplines of Engineering and Technology. The aim and scope of the journal is to provide an academic medium and an important reference for the advancement and dissemination of research results that support high-level learning, teaching and research in the fields of Engineering and Technology. We bring together Scientists, Academician, Field Engineers, Scholars and Students of related fields of Engineering and Technology
YouCat : Weakly Supervised Youtube Video Categorization System from Meta Data...Subhabrata Mukherjee
YouCat : Weakly Supervised Youtube Video Categorization System from Meta Data & User Comments using WordNet & Wikipedia, Subhabrata Mukherjee and Pushpak Bhattacharyya, In Proceedings of the 24th International Conference on Computational Linguistics (COLING 2012), IIT Bombay, Mumbai, Dec 8 - Dec 15, 2012 (Long Paper)
The document provides an overview of WordNet and its structure and relations. [1] WordNet is an online lexical database that organizes English words into synsets representing distinct concepts. [2] Words can belong to multiple synsets representing different meanings. [3] Synsets are linked by semantic relations including hyponymy, showing hierarchical "is a" relationships, and meronymy, showing "part of" relationships.
The document proposes using WordNet, an English lexical database, to semantically expand user search queries. It outlines experiments conducted using WordNet to expand query sets for a semantic search engine. The results showed some effective expansions but also problems with execution time.
This document provides an overview of sqlmap, an open source penetration testing tool that automates the detection and exploitation of SQL injection vulnerabilities. It discusses the creators and history of the tool, its main features like database enumeration and takeover functionalities, and techniques for detecting different types of SQL injections like blind, error-based, union queries, and time delays. Examples of how each technique works are also provided.
An object is an instance of a class that encapsulates state and behavior. A class defines the common attributes and behaviors of objects. Instance variables store the state of an object, and methods define the behaviors. Methods allow classes to hide implementation details and promote code reuse through polymorphism.
This document discusses WordNet and how it can be used with NLTK and Python. It provides examples of accessing WordNet synsets and lexical relations. Some key points covered include:
- WordNet is a lexical database that contains words and relationships between words like synonyms, hypernyms, and antonyms.
- The nltk.corpus.wordnet module can be used to access WordNet data in Python.
- Functions like synsets, lemma_names, and lemmas are used to retrieve information about synsets and their members.
- Relationships like hyponyms, hypernyms, meronyms, and entailments connect synsets and can be navigated.
- Path similarity measures
IJRET : International Journal of Research in Engineering and Technology is an international peer reviewed, online journal published by eSAT Publishing House for the enhancement of research in various disciplines of Engineering and Technology. The aim and scope of the journal is to provide an academic medium and an important reference for the advancement and dissemination of research results that support high-level learning, teaching and research in the fields of Engineering and Technology. We bring together Scientists, Academician, Field Engineers, Scholars and Students of related fields of Engineering and Technology
YouCat : Weakly Supervised Youtube Video Categorization System from Meta Data...Subhabrata Mukherjee
YouCat : Weakly Supervised Youtube Video Categorization System from Meta Data & User Comments using WordNet & Wikipedia, Subhabrata Mukherjee and Pushpak Bhattacharyya, In Proceedings of the 24th International Conference on Computational Linguistics (COLING 2012), IIT Bombay, Mumbai, Dec 8 - Dec 15, 2012 (Long Paper)
The document provides an overview of WordNet and its structure and relations. [1] WordNet is an online lexical database that organizes English words into synsets representing distinct concepts. [2] Words can belong to multiple synsets representing different meanings. [3] Synsets are linked by semantic relations including hyponymy, showing hierarchical "is a" relationships, and meronymy, showing "part of" relationships.
The document proposes using WordNet, an English lexical database, to semantically expand user search queries. It outlines experiments conducted using WordNet to expand query sets for a semantic search engine. The results showed some effective expansions but also problems with execution time.
Project Coin introduced several new features to Java 7 including diamond syntax for type inference, multi-catch exception handling, try-with-resources for cleaner resource management, strings in switch statements, and underscores in numeric literals. NIO.2 expanded non-blocking I/O with new file system APIs and WatchService for monitoring directories. Performance was improved through parallel array operations and other concurrency updates. Java 8 will include lambda expressions and new date/time APIs.
This document provides an overview of Doctrine 2.0, an object-relational mapper (ORM) for PHP. It discusses the history and team behind Doctrine, differences between Doctrine 1 and 2, performance improvements in Doctrine 2, and use of PHP 5.3 features like namespaces. Key aspects covered include the EntityManager/transparent persistence, schema management through the DBAL, and support for relational and non-relational databases via the ORM and ODM.
Abstract
Application sandboxes allow developers to take an unusual stance: not that our systems will be bug-free, and that bugs should be considered the corner-case; but that in fact there will be bugs, bugs as the rule, bugs that will be exploited in the messiest, ugliest way.
(I won't mention current events. But we'll know what they are...)
For this talk, I propose speaking about the design of a CGI framework that assumes exactly that: that its network-touching components will be exploited.
After all, CGI frameworks have a celestially vast attack surface: URL query strings; cookies and HTTP headers; and beneath and beyond it all, form parsing. Combine these attack vectors with validation--at best validation of simple types, and then more terrifyingly (and normally) via external libraries such as libpng.
In reviewing CGI frameworks in C for some recent work, I noticed less a lack of security focus than a parade committee for exploits. Even given my own small demands for CGI security, I was led to asked myself: can I do better than this?
The topic would necessarily focus on available sandbox techniques (e.g., systrace, Capsicum) and their practical pros and cons (portability, ease of implementation, documentation, etc.). After all, if we make mistakes in deploying our sandbox, it's just more ticker-tape for the parade.
The CGI framework in question, kcgi, is one I use for my own small purposes. Obviously it's ISC-licensed, well-documented C code, and will be mentioned as little as possible beyond as an exemplar of how easy (or hard!) it can be to write portable sandboxes. In short, this isn't about kcgi, but about systrace, Capsicum, Darwin's sandbox, and so on.
Speaker bio
Most of my open-source work focusses on UNIX documentation, e.g., the mandoc suite (now captained by schwarze@) and its constellation of related tools, such as pod2mdoc, docbook2mdoc, etc. Earlier work focussed more on security, from the experimental mult kernel container on OpenBSD and NetBSD to sysjail. In general, I dislike computers and enjoy the sea.
The key points of maintainable code according to the document are:
1) Code should be written to be easily read and understood. Methods and classes should not go on for too many lines to hold the reader's context.
2) Code should leverage existing libraries rather than reinventing the wheel for common tasks.
3) Guard clauses and failure fast approaches like exceptions help simplify code flow and make errors obvious.
4) Null values and unnecessary complexity like nested if statements should be avoided when possible.
The document discusses various topics related to .NET Framework and C#. It provides definitions of concepts like framework, CLR, and comparisons between C# and other languages. It also includes code examples in C# and Java for calculating directory size recursively. Quizzes are included to test understanding.
Collaborative Cuisine's 1 Hour JNDI CookbookKen Lin
For programmers who are already familiar with JNDI and LDAP basics, but wonder how to mix all those ingredients together into collaborative directory-enabled JEE solutions.
http://kenlin.com
Hidden pearls for High-Performance-PersistenceSven Ruppert
Small UseCases with a significant amount of data for internal company usage, most developers had this in their career, already. However, no Ops Team, no Kubernetes, no Cluster is available as part of the solution.
In this talk, I will show a few tech stacks that are helping to deal with persistent data without dealing with the classic horizontal scaling tech monsters like Kubernetes, Hadoop and many more.
Sit down, relax and enjoy the journey through a bunch of lightning-fast persistence alternatives for pure java devs.
In this session I will talk about advanced aspects of plugin development, such as working with remote agents, working in multiple operation systems, creating UI using Groovy, extending Jelly components, etc.
The document summarizes some of the new features introduced in Java 7. It discusses binary literals, underscores in numeric literals, strings in switch statements, automatic resource management using try-with-resources, multi-catch exceptions, more precise rethrowing of exceptions, diamond operator for generic types, varargs warnings and suppression, Java NIO.2 features for file navigation, directories, symbolic links, and walking file trees. The document provides examples and explanations of how to use these new Java 7 language features.
Java was created in 1991 by James Gosling, Mike Sheridan, and Patrick Naughton at Sun Microsystems. It has three editions: Java ME for limited devices, Java SE as the core platform for desktops and servers, and Java EE for large enterprise applications. Java code is compiled into bytecode that runs on a Java Virtual Machine (JVM) making Java portable across platforms. Key principles of Java include being object-oriented, secure, and platform independent.
Java history, versions, types of errors and exception, quiz SAurabh PRajapati
this ppt contains history and basic facts of object oriented programming language java, difference between JIT, JVM, JRE and JDK. it also having information about different versions of java. advantages over other language, difference between error and exception with its types is also included. explanation of final variable and string to int conversation is also added. in the end some twisted question of it which sharpen the knowledge of its basic are added. beyond this some programming examples with output is there too. hope u find it useful...!! thanku..!!
Enterprise Java: Just What Is It and the Risks, Threats, and Exposures It PosesAlex Senkevitch
Talk given at ISSA Wisconsin Chapter meeting, Jan 10, 2017.
Abstract:
""Enterprise Java" is a term we hear daily. However, how many of us actually--empirically--know what that represents from a risk, threat, and exposure basis? From the asset(s) it's on and data it accesses to the enterprise at-large that it sits within. This talk will explore the size, scope, and omnipresence of "Enterprise Java" in all its forms; and seek to give it a quantifiable attack surface. This talk will encompass various exemplars of where Enterprise Java appears in the enterprise. From the overt and ubiquitous application servers to the not so overt (but still ubiquitous) use in network appliances and "devices" (IoT) emerging today; and what this means to the threat profiles and attack surfaces of your organization."
At LinkedIn we run lots of Java services on Linux boxes. Java and Linux are a perfect pair. Except when they're not; then there's fireworks. This talk describes 5 situations we encountered where Java interacted with normal Linux behavior to create stunningly sub-optimal application behavior like minutes-long GC pauses. We'll deep dive to show What Java Got Wrong, why Linux behaves the way it does, and how the two can conspire to ruin your day. Finally we'll examine actual code samples showing how we fixed or hid the problems.
This document discusses IzPack, an open source installation framework. It begins with an introduction and demo of IzPack's features. Some key features discussed include cross-platform compatibility, customizable installers, conditions and languages packs. The document then discusses IzPack's positioning as the only true cross-platform installer. It concludes with thoughts on open source software, including community growth over time and governance challenges.
Daniel Krasner - High Performance Text Processing with Rosetta PyData
This talk covers rapid prototyping of a high performance scalable text processing pipeline development in Python. We demonstrate how Python modules, in particular from the Rosetta library, can be used to analyze, clean, extract features, and finally perform machine learning tasks such as classification or topic modeling on millions of documents. Our style is to build small and simple modules (each with command line interfaces) that use very little memory and are parallelized with the multiprocessing library.
The way from DB-driven development to DDDProvectus
The document discusses moving from database-driven development to domain-driven design (DDD) in Rails applications. It outlines common problems with Rails like database calls in views, mixing of layers, and lack of business rules in testing. DDD principles like bounded contexts, layers of abstraction (application, domain, infrastructure), and ubiquitous language are presented as solutions. DDD is meant to solve business problems by defining the domain using its own language, rather than thinking about implementation initially. Benefits of DDD include a domain-specific language, clear layering, and looser coupling between components.
Java EE 6 CDI Integrates with Spring & JSFJiayun Zhou
This document discusses integrating Java Contexts and Dependency Injection (CDI) with other Java technologies like Spring and JavaServer Faces (JSF). It covers CDI concepts like the Inversion of Control pattern and dependency injection. It also provides examples of using CDI with Spring, integrating CDI and JSF, and using CDI interceptors. The document recommends some libraries for CDI integration and provides sample code links.
Project Coin introduced several new features to Java 7 including diamond syntax for type inference, multi-catch exception handling, try-with-resources for cleaner resource management, strings in switch statements, and underscores in numeric literals. NIO.2 expanded non-blocking I/O with new file system APIs and WatchService for monitoring directories. Performance was improved through parallel array operations and other concurrency updates. Java 8 will include lambda expressions and new date/time APIs.
This document provides an overview of Doctrine 2.0, an object-relational mapper (ORM) for PHP. It discusses the history and team behind Doctrine, differences between Doctrine 1 and 2, performance improvements in Doctrine 2, and use of PHP 5.3 features like namespaces. Key aspects covered include the EntityManager/transparent persistence, schema management through the DBAL, and support for relational and non-relational databases via the ORM and ODM.
Abstract
Application sandboxes allow developers to take an unusual stance: not that our systems will be bug-free, and that bugs should be considered the corner-case; but that in fact there will be bugs, bugs as the rule, bugs that will be exploited in the messiest, ugliest way.
(I won't mention current events. But we'll know what they are...)
For this talk, I propose speaking about the design of a CGI framework that assumes exactly that: that its network-touching components will be exploited.
After all, CGI frameworks have a celestially vast attack surface: URL query strings; cookies and HTTP headers; and beneath and beyond it all, form parsing. Combine these attack vectors with validation--at best validation of simple types, and then more terrifyingly (and normally) via external libraries such as libpng.
In reviewing CGI frameworks in C for some recent work, I noticed less a lack of security focus than a parade committee for exploits. Even given my own small demands for CGI security, I was led to asked myself: can I do better than this?
The topic would necessarily focus on available sandbox techniques (e.g., systrace, Capsicum) and their practical pros and cons (portability, ease of implementation, documentation, etc.). After all, if we make mistakes in deploying our sandbox, it's just more ticker-tape for the parade.
The CGI framework in question, kcgi, is one I use for my own small purposes. Obviously it's ISC-licensed, well-documented C code, and will be mentioned as little as possible beyond as an exemplar of how easy (or hard!) it can be to write portable sandboxes. In short, this isn't about kcgi, but about systrace, Capsicum, Darwin's sandbox, and so on.
Speaker bio
Most of my open-source work focusses on UNIX documentation, e.g., the mandoc suite (now captained by schwarze@) and its constellation of related tools, such as pod2mdoc, docbook2mdoc, etc. Earlier work focussed more on security, from the experimental mult kernel container on OpenBSD and NetBSD to sysjail. In general, I dislike computers and enjoy the sea.
The key points of maintainable code according to the document are:
1) Code should be written to be easily read and understood. Methods and classes should not go on for too many lines to hold the reader's context.
2) Code should leverage existing libraries rather than reinventing the wheel for common tasks.
3) Guard clauses and failure fast approaches like exceptions help simplify code flow and make errors obvious.
4) Null values and unnecessary complexity like nested if statements should be avoided when possible.
The document discusses various topics related to .NET Framework and C#. It provides definitions of concepts like framework, CLR, and comparisons between C# and other languages. It also includes code examples in C# and Java for calculating directory size recursively. Quizzes are included to test understanding.
Collaborative Cuisine's 1 Hour JNDI CookbookKen Lin
For programmers who are already familiar with JNDI and LDAP basics, but wonder how to mix all those ingredients together into collaborative directory-enabled JEE solutions.
http://kenlin.com
Hidden pearls for High-Performance-PersistenceSven Ruppert
Small UseCases with a significant amount of data for internal company usage, most developers had this in their career, already. However, no Ops Team, no Kubernetes, no Cluster is available as part of the solution.
In this talk, I will show a few tech stacks that are helping to deal with persistent data without dealing with the classic horizontal scaling tech monsters like Kubernetes, Hadoop and many more.
Sit down, relax and enjoy the journey through a bunch of lightning-fast persistence alternatives for pure java devs.
In this session I will talk about advanced aspects of plugin development, such as working with remote agents, working in multiple operation systems, creating UI using Groovy, extending Jelly components, etc.
The document summarizes some of the new features introduced in Java 7. It discusses binary literals, underscores in numeric literals, strings in switch statements, automatic resource management using try-with-resources, multi-catch exceptions, more precise rethrowing of exceptions, diamond operator for generic types, varargs warnings and suppression, Java NIO.2 features for file navigation, directories, symbolic links, and walking file trees. The document provides examples and explanations of how to use these new Java 7 language features.
Java was created in 1991 by James Gosling, Mike Sheridan, and Patrick Naughton at Sun Microsystems. It has three editions: Java ME for limited devices, Java SE as the core platform for desktops and servers, and Java EE for large enterprise applications. Java code is compiled into bytecode that runs on a Java Virtual Machine (JVM) making Java portable across platforms. Key principles of Java include being object-oriented, secure, and platform independent.
Java history, versions, types of errors and exception, quiz SAurabh PRajapati
this ppt contains history and basic facts of object oriented programming language java, difference between JIT, JVM, JRE and JDK. it also having information about different versions of java. advantages over other language, difference between error and exception with its types is also included. explanation of final variable and string to int conversation is also added. in the end some twisted question of it which sharpen the knowledge of its basic are added. beyond this some programming examples with output is there too. hope u find it useful...!! thanku..!!
Enterprise Java: Just What Is It and the Risks, Threats, and Exposures It PosesAlex Senkevitch
Talk given at ISSA Wisconsin Chapter meeting, Jan 10, 2017.
Abstract:
""Enterprise Java" is a term we hear daily. However, how many of us actually--empirically--know what that represents from a risk, threat, and exposure basis? From the asset(s) it's on and data it accesses to the enterprise at-large that it sits within. This talk will explore the size, scope, and omnipresence of "Enterprise Java" in all its forms; and seek to give it a quantifiable attack surface. This talk will encompass various exemplars of where Enterprise Java appears in the enterprise. From the overt and ubiquitous application servers to the not so overt (but still ubiquitous) use in network appliances and "devices" (IoT) emerging today; and what this means to the threat profiles and attack surfaces of your organization."
At LinkedIn we run lots of Java services on Linux boxes. Java and Linux are a perfect pair. Except when they're not; then there's fireworks. This talk describes 5 situations we encountered where Java interacted with normal Linux behavior to create stunningly sub-optimal application behavior like minutes-long GC pauses. We'll deep dive to show What Java Got Wrong, why Linux behaves the way it does, and how the two can conspire to ruin your day. Finally we'll examine actual code samples showing how we fixed or hid the problems.
This document discusses IzPack, an open source installation framework. It begins with an introduction and demo of IzPack's features. Some key features discussed include cross-platform compatibility, customizable installers, conditions and languages packs. The document then discusses IzPack's positioning as the only true cross-platform installer. It concludes with thoughts on open source software, including community growth over time and governance challenges.
Daniel Krasner - High Performance Text Processing with Rosetta PyData
This talk covers rapid prototyping of a high performance scalable text processing pipeline development in Python. We demonstrate how Python modules, in particular from the Rosetta library, can be used to analyze, clean, extract features, and finally perform machine learning tasks such as classification or topic modeling on millions of documents. Our style is to build small and simple modules (each with command line interfaces) that use very little memory and are parallelized with the multiprocessing library.
The way from DB-driven development to DDDProvectus
The document discusses moving from database-driven development to domain-driven design (DDD) in Rails applications. It outlines common problems with Rails like database calls in views, mixing of layers, and lack of business rules in testing. DDD principles like bounded contexts, layers of abstraction (application, domain, infrastructure), and ubiquitous language are presented as solutions. DDD is meant to solve business problems by defining the domain using its own language, rather than thinking about implementation initially. Benefits of DDD include a domain-specific language, clear layering, and looser coupling between components.
Java EE 6 CDI Integrates with Spring & JSFJiayun Zhou
This document discusses integrating Java Contexts and Dependency Injection (CDI) with other Java technologies like Spring and JavaServer Faces (JSF). It covers CDI concepts like the Inversion of Control pattern and dependency injection. It also provides examples of using CDI with Spring, integrating CDI and JSF, and using CDI interceptors. The document recommends some libraries for CDI integration and provides sample code links.
1. MIT Java Wordnet Interface (JWI)
User’s Guide
Version 2.2.x
Mark A. Finlayson
(markaf@alum.mit.edu)
November 16, 2011
1 Purpose of the Software
This MIT Java Wordnet Interface (JWI) is a Java library for interfacing with the Wordnet electronic dictio-
nary. It features API calls to retrieve index words, synsets, and morphological exceptions from the Wordnet
data files. It also has calls that allow following lexical and semantic pointers, and contains classes that can
perform simple morphological processing. The library has no GUI elements.
JWI is freely available for all purposes, as long as proper acknowledgement is made. Details can be found
in the license, which is included at the end of this document.
2 Wordnet Versions Supported
JWI has been tested and works with the following versions of Wordnet.
Princeton Wordnet
• Wordnet 3.0
• Wordnet 2.1
• Wordnet 2.0
• Wordnet 1.7.1
• Wordnet 1.7.1
• Wordnet 1.6 (No access to cousin files or index.gloss file)
Stanford Augmented Wordnet
• Wordnet 2.1 + 10k
• Wordnet 2.1 + 20k
• Wordnet 2.1 + 30k
• Wordnet 2.1 + 40k
JWI is not compatible with Wordnet version 1.5. The Stanford Augmented Wordnet versions 400k(cropped)
and 400k(all) have errors in their byte-offsets, alphabetical ordering, and adjective satellite markings, and
so JWI does not work reliably with them. No version of Wordnet is included with the JWI distribution, and
must be downloaded separately.
1
2. JWI User’s Guide v2.2.x M.A. Finlayson
3 Getting Started
The main interface for accessing dictionary data is the edu.mit.jwi.IDictionary interface. The standard
implementation of this interface is the edu.mit.jwi.Dictionary class. In the simplest case, where you
are using Wordnet with the data files on the same filesystem as your Java program, you can instantiate the
Dictionary class with a single argument, a Java URL object that points to the directory where the Wordnet
dictionary data files are located.
An example of this can be found in Listing 1, in the form of a Java method testDictionary(). In
that method, the first block of three lines (4-6) deals with constructing a URL object that points to the
Wordnet data files. In this particular example, the base Wordnet directory is assumed to be stored in a
system environment variable called WNHOME. Note that the WNHOME variable points to the root of the Wordnet
installation directory and the dictionary data directory “dict” must be appended to this path. This may be
different on your system depending on where your Wordnet files are located. The second block of code, two
lines long (9-10), constructs an instance of the default Dictionary object, and opens it by calling the open()
method. The final block of six lines (13-18) demonstrates searching the dictionary for the first sense of the
noun “dog”. Listing 2 shows the console output of the method.
1 public void testDictionary () throws IOException {
2
3 // construct the URL to the Wordnet dictionary directory
4 String wnhome = System . getenv ( " WNHOME " ) ;
5 String path = wnhome + File . separator + " dict " ;
6 URL url = new URL ( " file " , null , path ) ;
7
8 // construct the dictionary object and open it
9 IDictionary dict = new Dictionary ( url ) ;
10 dict . open () ;
11
12 // look up first sense of the word " dog "
13 IIndexWord idxWord = dict . getIndexWord ( " dog " , POS . NOUN ) ;
14 IWordID wordID = idxWord . getWordIDs () . get (0) ;
15 IWord word = dict . getWord ( wordID ) ;
16 System . out . println ( " Id = " + wordID ) ;
17 System . out . println ( " Lemma = " + word . getLemma () ) ;
18 System . out . println ( " Gloss = " + word . getSynset () . getGloss () ) ;
19 }
Listing 1: Basic use of JWI
1 Id = WID -2084071 - n -? - dog
2 Lemma = dog
3 Gloss = a member of the genus Canis ( probably descended from the common
wolf ) that has been domesticated by man since prehistoric times ; occurs
in many breeds ; " the dog barked all night "
Listing 2: Output of the testDictionary() method in Listing 1 (for Wordnet 3.0)
2
3. JWI User’s Guide v2.2.x M.A. Finlayson
4 What’s New
The major new feature in JWI 2.2.x is the ability to load a dictionary fully into memory. This begets a
substantial performance improvement. To take advantage, use the new edu.mit.jwi.RAMDictionary class,
as shown in 3. There are several options to control loading; see the edu.mit.jwi.data.ILoadable interface.
1 public void tes tRAMD iction ary ( File wnDir ) throws Exception {
2
3 // construct the dictionary object and open it
4 IRAMDictionary dict = new RAMDictionary ( wnDir , ILoadPolicy . NO_LOAD ) ;
5 dict . open () ;
6
7 // do something
8 trek ( dict ) ;
9
10 // now load into memory
11 System . out . print ( " nLoading Wordnet into memory ... " ) ;
12 long t = System . cu rrentT imeMil lis () ;
13 dict . load ( true ) ;
14 System . out . printf ( " done (%1 d msec ) n " , System . cu rrentT imeMil lis () -t ) ;
15
16 // try it again , this time in memory
17 trek ( dict ) ;
18 }
19
20 public void trek ( IDictionary dict ) {
21 int tickNext = 0;
22 int tickSize = 20000;
23 int seen = 0;
24 System . out . print ( " Treking across Wordnet " ) ;
25 long t = System . cu rrentT imeMil lis () ;
26 for ( POS pos : POS . values () )
27 for ( Iterator < IIndexWord > i = dict . g e t I n d e x W o r d I t e r a t o r ( pos ) ; i .
hasNext () ; )
28 for ( IWordID wid : i . next () . getWordIDs () ) {
29 seen += dict . getWord ( wid ) . getSynset () . getWords () . size () ;
30 if ( seen > tickNext ) {
31 System . out . print ( ’. ’) ;
32 tickNext = seen + tickSize ;
33 }
34 }
35 System . out . printf ( " done (%1 d msec ) n " , System . cu rrentT imeMil lis () -t ) ;
36 System . out . println ( " In my trek I saw " + seen + " words " ) ;
37 }
Listing 3: Using JWI completely in-memory
1 Treking across Wordnet . . . . . . . . . . . . . . . . . . . . . . . . . . . done (3467 msec )
2 In my trek I saw 522858 words
3
4 Loading Wordnet into memory ... done (5728 msec )
5 Treking across Wordnet . . . . . . . . . . . . . . . . . . . . . . . . . . . done (205 msec )
6 In my trek I saw 522858 words
Listing 4: Output of the testRAMDictionary() method in Listing 3 (for Wordnet 3.0)
3
4. JWI User’s Guide v2.2.x M.A. Finlayson
5 Frequently Asked Questions
5.1 Which implementation of IDictionary should I use? Do I need to use
RAMDictionary?
Most will not need the performance edge that comes from loading all of Wordnet into memory. JWI is
already pretty fast. For most, the standard edu.mit.jwi.Dictionary class, pointing to a local directory
containing the Wordnet files, will do. If you’re worried about wasted computations, increase the cache size.
For most, the inconvenience inherent in waiting five or ten seconds for Wordnet to do a blocking load, or
the slowdown of the whole application during a non-blocking load, or having to remember to set the heap
size correctly, will be more of a hassle than just using the on-disk implementation.
5.2 I’m using RAMDictionary and I’m getting an OutOfMemoryError. What do I
do?
Wordnet is quite large, and usually won’t fit into the standard heap on most 32-bit JVMs. You need to
increase your heap size. On the Sun JVM, this involves the command line flag -Xmx along with a reasonable
heap size, say, 500 MB or 1 GB.
5.3 Why doesn’t JWI return a word I know is in Wordnet?
The IDictionary interface contract states that you must pass in the root form of the word you are looking for.
If you pass in a plural form of a noun (such as “dogs” instead of “dog”), or a non-base form of verb (“running”
instead of “run”), it won’t give you back the right objects. Use the edu.mit.jwi.morph.WordnetStemmer
class to obtain root forms for words, before passing them to the dictionary for lookup.
5.4 How do I retrieve the synonyms of a word?
Each meaning, or synset, in Wordnet has multiple lexical forms or collocations associated with it. The
meaning of the word dog implied in sentence “My dog Fido barks,” has three: dog, domestic dog, and
Canis familiaris.To obtain this list, we must first get a handle to the ISynset object for that meaning.
Then, we can get the graphical forms by iterating over all the IWord objects associated with that synset.
Java code that does this is shown in Listing 5.
1 public void getSynonyms ( IDictionary dict ) {
2
3 // look up first sense of the word " dog "
4 IIndexWord idxWord = dict . getIndexWord ( " dog " , POS . NOUN ) ;
5 IWordID wordID = idxWord . getWordIDs () . get (0) ; // 1 st meaning
6 IWord word = dict . getWord ( wordID ) ;
7 ISynset synset = word . getSynset () ;
8
9 // iterate over words associated with the synset
10 for ( IWord w : synset . getWords () )
11 System . out . println ( w . getLemma () ) ;
12 }
Listing 5: Retrieving the synonyms of the first meaning of the word “dog”
1 dog
2 domestic _ dog
3 Canis _ familiaris
Listing 6: Output of the getSynonyms() method in Listing 5 (for Wordnet 3.0)
4
5. JWI User’s Guide v2.2.x M.A. Finlayson
5.5 How do I retrieve the hypernyms of a word?
Each synset is connected to other synsets by semantic pointers. One of the most prevalent of these is the
Hypernym pointer, which points from a meaning to other meanings that are “more general” in some fashion;
these are called hypernyms. The sense of dog used in the previous example has a two hypernyms: the subset
of mammals that are closely related to dogs, such as wolves or jackals (this Synset has synonyms canine and
canid ), and the set of domesticated animals (with synonyms domestic animal and domesticated animal ). To
obtain these synsets, we must first get a handle to the ISynset object for the meaning for dog. Then, we can
retrieve the hypernym synsets via the getRelatedSynsets(IPointerType) method. Java code that does
this is shown in Listing 7.
1 public void getHypernyms ( IDictionary dict ) {
2
3 // get the synset
4 IIndexWord idxWord = dict . getIndexWord ( " dog " , POS . NOUN ) ;
5 IWordID wordID = idxWord . getWordIDs () . get (0) ; // 1 st meaning
6 IWord word = dict . getWord ( wordID ) ;
7 ISynset synset = word . getSynset () ;
8
9 // get the hypernyms
10 List < ISynsetID > hypernyms =
11 synset . ge tRelat edSyns ets ( Pointer . HYPERNYM ) ;
12
13 // print out each h y p e r n y m s id and synonyms
14 List < IWord > words ;
15 for ( ISynsetID sid : hypernyms ) {
16 words = dict . getSynset ( sid ) . getWords () ;
17 System . out . print ( sid + " { " ) ;
18 for ( Iterator < IWord > i = words . iterator () ; i . hasNext () ;) {
19 System . out . print ( i . next () . getLemma () ) ;
20 if ( i . hasNext () )
21 System . out . print ( " , " ) ;
22 }
23 System . out . println ( " } " ) ;
24 }
25 }
Listing 7: Retrieving the hypernums of the word “dog”
1 SID -2083346 - n { canine , canid }
2 SID -1317541 - n { domestic _ animal , domesticated _ animal }
Listing 8: Output of the getHypernyms() method in Listing 7 (for Wordnet 3.0)
5
6. JWI User’s Guide v2.2.x M.A. Finlayson
5.6 Why doesn’t JWI have a pointer from item X to item Y that I know is in
Wordnet?
For this, the problem is usually that you are trying to retrieve synsets via lexical pointers, or IWord objects
via semantic pointers.The key difference between the two is that semantic pointers are between synsets (i.e.,
meanings, such as the domesticated animal meaning captured in {dog, domestic dog, canis familiaris}), and
lexical pointers are between word forms (e.g., the dog word form of the above meaning only). To retrieve
semantic pointers, one uses the ISynset.getRelatedSynsets(IPointer) method, and to retrieve lexical
pointers, one should use the IWord.getRelatedWords(IPointer) method. If you pass a lexical pointer (say
derived) to the getRelatedSynsets method, you won’t get anything back.
These two types of pointers are not well distinguished in the Wordnet documentation. Figure 1 diagrams
the relationship. As can be seen, in JWI, lexical pointers are found only between IWord objects, and semantic
pointers are found only between ISynset objects. There are no pointers that connect a word to a synset.
Thus, you can only find hypernyms of synsets, and you can only find derived forms of words.
IIndexWord IWord ISynset
canine 02083346
canine : 02083346
(noun) { canine, canid }
hypernym hyponym
02084071
dog : 02084071 { dog, domestic_dog,
canis_familiaris }
dog
(noun)
same lemma,
different meanings
dog : 10114209
10114209
synonyms { dog, frump }
frump
(noun) frump : 10114209
derivationally
related form
frumpy 00974519
frumpy : 00974519
(adjective) { frumpy }
Figure 1: The structure of Wordnet: index words, words, synsets, synonyms, lexical pointers (green arrows)
and semantic pointers (red arrows) (for Wordnet 3.0)
6
7. JWI User’s Guide v2.2.x M.A. Finlayson
5.7 How do I know which pointers are lexical and which are semantic?
Unfortunately, the Wordnet documentation doesn’t give much hint about which pointers are used as lexical
pointers, which are used as semantic pointers, and which as both. Fortunately for those seeking an answer
to this question, I wrote some code that sifts through Wordnet and counts the instances of each. Those
numbers for Wordnet 3.0 are found in Table 1. The counts for the Wordnet 2.0 and 2.1 are similar, and
the separation of lexical and semantic pointers between lexical and semantic is exactly the same, with the
exception that Wordnet 2.0 uses region and region member types only as semantic pointers.
Pointer Lexical Semantic Total Both?
also see 580 2692 3272 Yes
antonym 7979 - 7979 -
attribute - 1278 1278 -
cause - 220 220 -
derived 74714 - 74714 -
derived adj 3222 - 3222 -
entailment - 408 408 -
holonym mem - 12293 12293 -
holonym prt - 9097 9097 -
holonym sub - 797 797 -
hypernym - 89089 89089 -
hypernym in - 8577 8577 -
hyponym - 89089 89089 -
hyponym ins - 8577 8577 -
meronym mem - 12293 12293 -
meronym prt - 9097 9097 -
meronym sub - 797 797 -
participle 73 - 73 -
pertainym 4799 - 4799 -
region 15 1345 1360 Yes
region mem 15 1345 1360 Yes
similar to - 21386 21386 -
topic 11 6643 6654 Yes
topic mem 11 6643 6654 Yes
usage 409 967 1376 Yes
usage mem 409 967 1376 Yes
verb group 2 1748 1750 Yes
Total 92239 285348 377587
Table 1: Counts of Lexical and Semantic Pointers (for Wordnet 3.0)
7
8. JWI User’s Guide v2.2.x M.A. Finlayson
5.8 Can JWI load itself completely into memory?
Yes, JWI now has the ability, as of version 2.2.0, to load itself completely into memory. For the cost of
several hundred megabytes of memory, you get a significant speedup. See the edu.mit.jwi.RAMDictionary
class.
5.9 Who do the following messages that are following printed to System.err
mean?
1229375196772 - Error on direct access in verb data file: check CR/LF endings
The Wordnet .data files (i.e., the four files that either start or end with data, e.g., noun.data, verb.data,
etc.) are indexed by byte offset. The line endings in the files are indicated in the standard UNIX way, by a
single linefeed (LF) character, often written as “n”. In contrast, the standard linefeed on Windows systems
is a carriage-return character followed by a linefeed (CR/LF), often written “rn”. Some archive extraction
programs automatically convert LF linefeeds to CR/LF linefeeds, especially if you’re on a Windows system.
If this was done, the Wordnet data files will have an extra character at the end of each line, and the byte
offsets will no longer index to the right places. As of JWI 2.1.5, there is a check for this, where the above
error prints. The error doesn’t prevent JWI from running, but it does cause a reduction in performance.
I recommend you re-extract your data files from the Wordnet archive, making sure you have the option to
automatically convert line endings unchecked. For example, in WinZip 9, there is option under Configuration
– Miscellaneous called “TAR smart CR/LF conversion”. Make sure it is unchecked when extracting the
wordnet files.
5.10 Why are all my ISynset objects null?
See the answer to Question 5.9. In versions of JWI before 2.1.5, there was no check for corrupted line endings
in the data files, and the symptom is no errors except null synset objects.
5.11 How do I license JWI for commercial use?
As of version 2.2.2, JWI is free to use for all purposes, as long as proper copyright acknowledgment is made.
No special license is needed for commercial use.
5.12 How do I report a bug / request a feature / heap praise upon you for
making such cool software?
If you find a bug, have a feature request, or wish to send your praises, please contact me via my permanent
email forwarding address markaf@alum.mit.edu.
8
9. JWI User’s Guide v2.2.x M.A. Finlayson
6 License
The following is the full text of the MIT Java Wordnet Interface license.
Copyright (c) 2007-2011 Massachusetts Institute of Technology.
All rights reserved.
This program and the accompanying materials are made available by MIT under the terms of this license. Contact markaf@alum.mit.edu for further details.
The following constitutes the JWI License. It is identical to the Creative Commons Attribution Version 3.0 Unported License, which can be found on the
web at:
http://creativecommons.org/licenses/by/3.0/legalcode
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE (“CCPL” OR “LICENSE”).
THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED
UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE.
TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE
IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
1. Definitions
a. “Adaptation” means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work,
arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any
other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that
constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work,
performance or phonogram, the synchronization of the Work in timed-relation with a moving image (“synching”) will be considered an Adaptation for the
purpose of this License.
b. “Collection” means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or
other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute
intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate
and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an
Adaptation (as defined above) for the purposes of this License.
c. “Distribute” means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of
ownership.
d. “Licensor” means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
e. “Original Author” means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual
or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who
act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the
producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization
that transmits the broadcast.
f. “Work” means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary,
scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a
lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a
musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography;
a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process
analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture
or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a
variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
g. “You” means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the
Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
h. “Publicly Perform” means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process,
including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access
these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to
the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs,
sounds or images.
i. “Reproduce” means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and
reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
2. Fair Dealing Rights.
Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided
for in connection with the copyright protection under copyright law or other applicable laws.
3. License Grant
Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the
applicable copyright) license to exercise the rights in the Work as stated below:
a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
b. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label,
demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked “The original work was translated
from English to Spanish,” or a modification could indicate “The original work has been modified.”
c. to Distribute and Publicly Perform the Work including as incorporated in Collections;
d. and, to Distribute and Publicly Perform Adaptations.
e. For the avoidance of doubt:
i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing
scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme
can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your
exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b) and otherwise waives the right to
collect royalties through any statutory or compulsory licensing scheme; and,
iii. Voluntary License Schemes. The Licensor reserves the right to collect royalties, whether individually or, in the event that the Licensor is a member of a
collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License that is for
a purpose or use which is otherwise than noncommercial as permitted under Section 4(c).
The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such
modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by
9
10. JWI User’s Guide v2.2.x M.A. Finlayson
Licensor are hereby reserved, including but not limited to the rights set forth in Section 4(d).
4. Restrictions.
The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier
(URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict
the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may
not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You
Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work
that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a)
applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of
this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required
by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation
any credit as required by Section 4(c), as requested.
b. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a),
keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or
pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing
entity, journal) for attribution (“Attribution Parties”) in Licensor’s copyright notice, terms of service or by other reasonable means, the name of such party
or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the
Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and, (iv) consistent with Section 3(b), in the case of an
Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., “French translation of the Work by Original Author,” or “Screenplay based on
original Work by Original Author”). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the
case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears,
then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may
only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License,
You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution
Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or
Attribution Parties.
c. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly
Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in
relation to the Work which would be prejudicial to the Original Author’s honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in
which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation,
modification or other derogatory action prejudicial to the Original Author’s honor and reputation, the Licensor will waive or not assert, as appropriate, this
Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License
(right to make Adaptations) but not otherwise.
5. Representations, Warranties and Disclaimer.
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REP-
RESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING,
WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE
ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE.
SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
6. Limitation on Liability.
EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY
FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF
THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. Termination.
a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities
who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or
entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding
the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that
any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License),
and this License will continue in full force and effect unless terminated as stated above.
8. Miscellaneous.
a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and
conditions as the license granted to You under this License.
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and
conditions as the license granted to You under this License.
c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the
terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make
such provision valid and enforceable.
d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by
the party to be charged with such waiver or consent.
e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or
representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication
from You. This License may not be modified without the mutual written agreement of the Licensor and You.
f. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the
Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the
WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter
take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation
of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not
granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights
under applicable law.
10