WordNet - это то, что вам нужно. Он большой, содержит более ста тысяч записей и находится в свободном доступе.
Однако он не хранится в формате XML. Для доступа к данным вы захотите использовать один из существующих WordNet API для выбранного вами языка.
Использование API обычно довольно просто, поэтому я не думаю, что вам нужно сильно беспокоиться об «изучении (a) сложного API». Например, заимствовано из WordNet How to для Natural Language Toolkit (NLTK) на основе Python :
>>> from nltk.corpus import wordnet
>>>
>>> # Get All Synsets for 'dog'
>>> # This is essentially all senses of the word in the db
>>> wordnet.synsets('dog')
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'),
Synset('cad.n.01'), Synset('frank.n.02'),Synset('pawl.n.01'),
Synset('andiron.n.01'), Synset('chase.v.01')]
>>> # Get the definition and usage for the first synset
>>> wn.synset('dog.n.01').definition
'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'
>>> wn.synset('dog.n.01').examples
['the dog barked all night']
>>> # Get antonyms for 'good'
>>> wordnet.synset('good.a.01').lemmas[0].antonyms()
[Lemma('bad.a.01.bad')]
>>> # Get synonyms for the first noun sense of 'dog'
>>> wordnet.synset('dog.n.01').lemmas
[Lemma('dog.n.01.dog'), Lemma('dog.n.01.domestic_dog'),
Lemma('dog.n.01.Canis_familiaris')]
>>> # Get synonyms for all senses of 'dog'
>>> for synset in wordnet.synsets('dog'): print synset.lemmas
[Lemma('dog.n.01.dog'), Lemma('dog.n.01.domestic_dog'),
Lemma('dog.n.01.Canis_familiaris')]
...
[Lemma('frank.n.02.frank'), Lemma('frank.n.02.frankfurter'),
...
Хотя в WordNet есть уклон от американского английского, он поддерживает британское написание и использование. Например, вы можете найти «цвет», и один из наборов синхросигналов для «лифта» - «elevator.n.01».
Примечания по XML
Если представление данных в виде XML имеет важное значение, вы можете легко использовать один из API-интерфейсов для доступа к базе данных WordNet и преобразовать его в XML, например см. Thinking XML: Запрос WordNet как XML .
Я использовал тезаурус Роже в прошлом. Синонимическая информация содержится в текстовых файлах. Также есть код Java, который поможет вам разобрать текст.
Эти страницы содержат ссылки на множество тезаурусов / лексических ресурсов, некоторые из которых можно загрузить бесплатно.
http://www.w3.org/2001/sw/Europe/reports/thes/thes_links.html
http://www-a2k.is.tokushima-u.ac.jp/member/kita /NLP/lex.html