Digital documents that are the input to an indexing process are typically
bytes in a file or on a web server. The first step of processing is to
convert this byte sequence into a linear sequence of characters. For the
case of plain English text in ASCII encoding, this is
trivial. But often things get much more complex. The sequence of
characters may be encoded by one of various single byte or multibyte
encoding schemes,
such as Unicode UTF-8, or various national or vendor-specific
standards. We need to determine the correct encoding. This can be
regarded as a machine learning
classification problem, as discussed
in Chapter 13 ,but is often handled by heuristic methods, user
selection, or by using provided document metadata.
Once the encoding is
determined, we decode the byte sequence to a
character sequence. We might save the choice of encoding
because it gives some evidence about what language the document is
written in.
The characters may have to be decoded out of some binary representation like Microsoft Word DOC files and/or a compressed format such as zip files. Again, we must determine the document format, and then an appropriate decoder has to be used. Even for plain text documents, additional decoding may need to be done. In XML documents xmlbasic, character entities, such as &, need to be decoded to give the correct character, namely & for &. Finally, the textual part of the document may need to be extracted out of other material that will not be processed. This might be the desired handling for XML files, if the markup is going to be ignored; we would almost certainly want to do this with postscript or PDF files. We will not deal further with these issues in this book, and will assume henceforth that our documents are a list of characters. Commercial products usually need to support a broad range of document types and encodings, since users want things to just work with their data as is. Often, they just think of documents as text inside applications and are not even aware of how it is encoded on disk. This problem is usually solved by licensing a software library that handles decoding document formats and character encodings.
The idea that text is a linear sequence of characters is also called into question by some writing systems, such as Arabic, where text takes on some two dimensional and mixed order characteristics, as shown in and 2.2 . But, despite some complicated writing system conventions, there is an underlying sequence of sounds being represented and hence an essentially linear structure remains, and this is what is represented in the digital representation of Arabic, as shown in Figure 2.1 .