如何用python(django)创建英语词典应用程序?

SSS*_*SSS 10 python django dictionary

我想使用python(或使用django)创建一个在线词典应用程序.

它将类似于http://dictionary.reference.com/.

PS:字典没有存储在数据库中.它存储在文本文件或gunzip文件中.可以从以下URL下载免费的英语词典文件:dicts.info/dictionaries.php.

最简单的免费字典文件格式为:

word1 explanation for word1 

word2 explanation for word2 
Run Code Online (Sandbox Code Playgroud)

还有一些其他格式.但所有都存储在文本文件或text.gz文件中

我的问题是

(1)是否有任何现有的开源python包或模块或应用程序实现了我可以使用或学习的功能?

(2)如果第一个问题的答案是否定的.我应该遵循哪种算法来创建这样的Web应用程序?我可以简单地使用python内置字典对象来完成这项工作吗?这样字典对象的键就是英文单词,值就是解释.在性能方面这样可以吗?或者我是否必须创建自己的树对象以加快搜索速度?或任何正确处理此工作的现有包裹?

非常感谢你.

bra*_*urf 9

您可能需要查看http://www.nltk.org/ 您可以获得大量单词及其定义,而无需担心数据库的实现细节.如果你对所有这些东西都不熟悉,那至少让你上去和开始是有用的,然后当你有一个工作版本时,开始加入一个数据库.

以下是如何从该包中获取"dog"的所有可用含义的快速摘录:

from nltk.corpus import wordnet
for word_meaning in wordnet.synsets('dog'):
    print word_meaning.definition
Run Code Online (Sandbox Code Playgroud)


seb*_*piq 3

我不确定您在谈论“什么”功能。如果您的意思是“从数据库中记录的字典中搜索关键字”,那么这python dictionnary不是一个可能的解决方案,因为您必须反序列化整个数据库才能进行搜索。

您应该关注 django 的“搜索”应用程序。很多人建议使用haystack

最好的 Django 搜索应用程序是什么?

并使用此搜索引擎在您的数据库中查找某些关键字。

如果您不想支持复杂的搜索,那么您也可以在数据库中查询精确的关键字

DictEntry.objects.get(keyword=`something`).definition
Run Code Online (Sandbox Code Playgroud)

我想这完全取决于您想要达到的复杂程度,但是可以有非常简单的解决方案。

编辑 :

如果字典来自文件,那么很难说,你有很多解决方案。

如果文件很小,您确实可以在启动服务器时将其反序列化为字典,然后始终在同一实例中搜索(这样您就不必为每个请求再次反序列化)。

如果文件确实很大,您可以考虑将它们迁移到数据库中。

1)首先创建你的Django模型,这样你就会知道你需要什么数据,你的字段的名称等等......例如:

class DictEntry(Model):
    keyword = CharField(max_length=100)
    definition = CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)

2)您提供的链接上的某些文件似乎是 csv 格式(似乎您也可以使用 xml 格式)。使用标准库中的csv模块,您可以将这些文件提取到 python 中。

3) 然后使用 json 或 yaml python 库,将这些文件转储回不同的格式(json 或 yaml),如模型初始数据中所述。神奇的是,您的初始数据已准备就绪!

PS:Python 的好处是:你用 google 搜索“python json”你会找到官方文档,因为用于写入/读取 json 的库是标准 python 库的一部分!同上 xml 和 csv ...