4954
Comment:
|
5870
Interim save
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
(Power Users only.) (BenWaldron is responsible for this module.) (Runs under both Linux and M$ Windows) |
The LexDB is useful for grammars with large lexicons. Rather than storing the lexicon in a .tdl file, which has to be loaded each time the lexicon is changed, the LexDB stores the lexical entries in a postgres database. The instructions for using the LexDB are somewhat sparse. The best approach for new users is to start by getting a LexDB going with an existing grammar in order to become familiar with the set up. The initial choice that has to be made is whether to use the LexDB in the `single user' or `multiple user' modes. In the multiple user mode, the revisions are stored in the database itself. The assumption is that the database is running on a server to which multiple users may have access. This mode assumes that the database is set up with its own id (something that system administrators may dislike because of potential security risks). In single user mode, the database user may be the actual user. Revisions are not stored in the database (the assumption is that Subversion or CVS will be used to manage changes). |
Line 7: | Line 7: |
If running the LKB runtime binary: | * LkbLexDbSingleUser for basic instructions for the SINGLE USER LexDB |
Line 9: | Line 9: |
* Download and install (LkbInstallation) the latest LKB, taking care to install/extract the `lkb_data.tgz` archive into the lkb installation directory (henceforth [Linux] `~/lkb`). | * LkbLexDbMultiUser for basic instructions for the MULTI USER LexDB |
Line 11: | Line 11: |
If running the LKB from source: * Download and compile (LkbCompilation) the LKB, ensuring that * your `.clinit.cl` file contains `(pushnew :psql *features*)` |
|
Line 16: | Line 12: |
== LKB Compilation == The LexDB code requires that *features* includes :psql. This is now true by default for supported platforms. |
|
Line 118: | Line 118: |
== Troubleshooting * If M-x lexdb results in "no connection to LexDb", make sure that a working grammar is loaded. |
|
Line 120: | Line 124: |
LexDbInternals [[BR]]["MWEs and Idiomatic Expressions"] [[BR]] [http://www.cl.cam.ac.uk/~bmw20/Papers/ Papers] |
* [http://www.cl.cam.ac.uk/~bmw20/Papers/ Papers] * LexDbEmacsInterface |
LexDB Usage Instructions
The LexDB is useful for grammars with large lexicons. Rather than storing the lexicon in a .tdl file, which has to be loaded each time the lexicon is changed, the LexDB stores the lexical entries in a postgres database. The instructions for using the LexDB are somewhat sparse. The best approach for new users is to start by getting a LexDB going with an existing grammar in order to become familiar with the set up. The initial choice that has to be made is whether to use the LexDB in the single user' or multiple user' modes. In the multiple user mode, the revisions are stored in the database itself. The assumption is that the database is running on a server to which multiple users may have access. This mode assumes that the database is set up with its own id (something that system administrators may dislike because of potential security risks). In single user mode, the database user may be the actual user. Revisions are not stored in the database (the assumption is that Subversion or CVS will be used to manage changes).
* LkbLexDbSingleUser for basic instructions for the SINGLE USER LexDB
* LkbLexDbMultiUser for basic instructions for the MULTI USER LexDB
Now initialize the database server (LexDbPsqlInitialize) and the lexical database itself (LexDbInitialize).
LKB Compilation
The LexDB code requires that *features* includes :psql. This is now true by default for supported platforms.
HOW TO set the filter
LexDB -> Set Filter
The filter specified is interpreted as an SQL WHERE clause. Examples:
userid = 'danf' userid = 'danf' AND dialect = 'my_dialect' userid IN ('danf', 'aac') confidence > 0.5
(Note: the default is NULL. Change this to a non-NULL value to select a subset of the lexical database.)
The filter determines the entries in the lexicon as seen by a particular user. Only revision entries matching the filter conditions in filter can form part of the lexicon (of these, the most recent revision is the one actually used).
HOW TO store LexDB in CVS
The LexDB may be dumped to text files which can then be uploaded to storage in CVS.
1. LexDB -> Dump
(This will dump public schema tables to text files -- eg. lexdb.rev, lexdb.rev_key, lexdb.dfn, lexdb.fld, lexdb.meta) BR(Note: the dump mechanism will also produce a .tdl file if *lexdb-dump-tdl* is set to t) BR(Note: the database dump files are tab-separated with null as \N)
2. Run the cvs commit command. E.g.
cvs commit ~/erg/lexdb.*
HOW TO retrieve LexDB from CVS
1. Run the cvs update command to retrieve the latest dump file. E.g.
cvs update ~/erg/lexdb.*
2. LexDB -> Load ('rev' entries)
These steps update the LexDB (public schema) to include all new revisions stored in a CVS dump file. The new entries will be copied to the table public.rev_new. Any changes made to your copy of the LexDB since the last update will be preserved.
HOW TO export LexDB to TDL file
LexDB -> Export (TDL file)
Dumps active LexDB entries (determined by filter) to .tdl file.
HOW TO edit entries in the LexDB
The LexDB-Emacs interface allows editing of lexical entries from within an Emacs environment (with browsing functionality, field completion, etc.). New revision entries are first stored in the users private schema, and hence are visible only to the particular user.
0. Add the following (path adjusted for your setup) to your .emacs file:
(add-to-list 'load-path "/path/to/delphin/lkb/lexdb") (load "pg-interface")
1. In [http://www.gnu.org/software/emacs/emacs.html GNU Emacs]: M-x lexdb to enter LexDB major mode. Then see the PG menu.
Available commands in LexDB major mode are:
C-l : load (active revision of lexical entry) into Emacs
C-c C-c : commit (edited/new revision of) lexical entry into LexDB
TAB : field completion
M-TAB l : get (ring of) entries in table lex where value of current field matches that in buffer
M-TAB r : get (ring of) entries in union of rev tables where value of current field matches that in buffer
M-n : cycle through ring of entries obtained above
M-s : as M-TAB, but explicitly specify field value
M-va : view entries added in merge operation from dump file
M-vs : view entries in user's privat rev
To remove a lexical entry from the current lexicon lex, create a (head) revision where the dead field is set to t (true) rather than f (false). In this manner we keep a revision history even for entries which are no longer used (and such entries can be reactivated if necessary). No revision entry should ever be deleted from the lexical database itself.
HOW TO import TDL entries from a file
To add a small number of new (revision) entries from a .tdl file: LexDB -> Import (TDL file). You will be queried to provide values for other certain non-grammar fields. The entries will go into the private rev table.
HOW TO commit entries to public rev
The LexDB consists of a single public schema and a set of private schemas, one per user. New (revision) entries are placed initially in your private schema. To commit (all) entries in your private schema to the public table: LexDB -> Commit private 'rev'
HOW TO list entries in private rev
From LKB: LexDB -> Display private 'rev'
or
from Emacs LexDB major mode: M-vs
HOW TO clear entries in private rev
LexDB -> Clear private 'rev == Troubleshooting If M-x lexdb results in "no connection to LexDb", make sure that a working grammar is loaded.
Further Topics