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内置字典对象来完成这项工作吗?这样字典对象的键就是英文单词,值就是解释.在性能方面这样可以吗?或者我是否必须创建自己的树对象以加快搜索速度?或任何正确处理此工作的现有包裹?
非常感谢你.
您可能需要查看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)
我不确定您在谈论“什么”功能。如果您的意思是“从数据库中记录的字典中搜索关键字”,那么这python dictionnary不是一个可能的解决方案,因为您必须反序列化整个数据库才能进行搜索。
您应该关注 django 的“搜索”应用程序。很多人建议使用haystack:
并使用此搜索引擎在您的数据库中查找某些关键字。
如果您不想支持复杂的搜索,那么您也可以在数据库中查询精确的关键字
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 ...
| 归档时间: |
|
| 查看次数: |
10100 次 |
| 最近记录: |