The three main approaches to this have fundamentally different approaches and it really depends upon what your requirements are.
You've got a dictionary of some sort. In many languages,
dictionary is synonymous with
Map and that will lead us down the different paths.
The first approach is to use a database of some sort. You could store this in an actual database external to the system - Oracle, MSSQL, MySQL, PostgreSQL just being the big names that come to mind. With this approach, the database engine does all the work looking up things and completely external to your application. This has the benefit that it is possible to work with it with external tools, but has the side bit that it itself is an external tool.
Next is the simpler embedded databases. Berkley Database, optionally through SQLLite as a layer to make accessing the data a bit more familiar to the SQL family. The Berkley Database itself will fill the role of key value pairs (its a simple hash map behind the scenes). This means getting other libraries (but not tools) to store your data.
Realizing that this is a dictionary of text there are specific data structures that are optimized to processing text structures. The trie is a specialized tree for working with text. This is just one of many data structures - the specifics of it really depend on what you are doing with your data once you have it. The hash map is another way to store the data after it has been read (and there are many forms of the hash map too).
You may find that something else works better - it depends on what you are doing, how much data you have, the ratio of reads to writes (are there any writes at all?), knowing the size of the data before hand or not, if you want to be able to search on partial data, etc... All of these things should come into play in choosing the correct data structure.