convert pdf page to image c# itextsharp : Add password to pdf document Library SDK class asp.net .net winforms ajax Francis_Flynn1-part1550

Text Mining Handbook 
Casualty Actuarial Society E-Forum, Spring 2010 
11 
More complicated regular expressions can also be used to extract strings not containing a specific 
set of characters, extract strings with pre-specified patterns of letters or numbers, such as a phone 
number or social security number, and to determine where sentences begin and end, etc.  The reader 
who wishes to pursue this subject further should refer to Chapter 2 of Bilisoly (2008), Chapter 12 of 
Hoffman (2003) or the more extensive coverage in Frenz (2005). 
The early days of text mining involved simple word searches for a key word in some text. For 
instance, suppose we noticed that a number of GL claims involved damage to homeowners and we 
wished to further investigate these claims.  Perl could be used to search for the word “homeowner” 
in the accident description field.  The following is the procedure for doing this: 
First, read in the accident description field. 
For each claim: 
Read in each word. 
If the lower case of the word is “homeowner” output a 1 for the new indicator 
variable, otherwise output a 0.  
Code for this is displayed in the program SearchTarget.pl.  Inputting data is covered briefly in 
Appendix A.  Table 2.3 below shows that claims involving homeowners are more than twice as 
severe as other claims: 
Table 2.3 
Homeowner 
Claim 
Mean 
Severity 
No 
2,376.6  
Yes 
6,221.1  
2.4 Simple Text Statistics 
One of the first things an analyst may want to do when examining text is to produce simple text 
statistics.  For instance, what are the length statistics of words and the most common words in the 
text?  In Perl the length function can be used to evaluate the length of words. A count variable is 
updated with the count of words of length n.  Table 2.4 presents the length statistics for both the 
GL Claims  data  and the  survey response  data.    The program  length.pl  contains  the  code  for 
computing the length of words.  The length of each word is tabulated within a loop. A key line of 
Add password to pdf document - C# PDF Password Library: add, remove, edit PDF file password in C#.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
pdf owner password; copy text from protected pdf
Add password to pdf document - VB.NET PDF Password Library: add, remove, edit PDF file password in vb.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
adding a password to a pdf file; change password on pdf file
Text Mining Handbook 
Casualty Actuarial Society E-Forum, Spring 2010 
12 
code is: 
$count[length($x)] +=1; #increment counter for words of this length. 
(Note: in this code the variable $x holds the word after the line has been parsed.) 
Table 2.4 
Distribution of Length of Words 
Length
GL 
Data
Survey Data
1
1,062
21
2
4,172
309
3
5,258
298
4
5,418
215
5
2,982
153
6
2,312
143
7
2,833
213
8
1,572
161
9
1,048
216
10
591
146
11
111
92
12
156
44
13
78
61
14
19
2
15
0
3
16
1
1
17
2
0
18
1
0
19
1
0
To compile length statistics one needs to create a list of every word in a database, loop through 
the database, and tabulate the number of times each word is found. To efficiently create a list of 
words, a hash structure is used in Perl. A hash is like an array, but can be distinguished from an array 
in a number of ways.  An array is typically indexed with zero and integer values, while a hash can be 
indexed with a letter or word.  Instead of an index the hash has a key that maps to a specific array 
value.  For instance, while the first entry in a Perl array is $array[0], the first entry in a hash might be 
$hash{‘a’} or $hash{‘x’} or even $hash{‘hello’}. (Note that the order is not relevant.) Because the 
time to locate a value on a hash table is independent of its size, hashes can be very efficient for 
processing large amounts of data (Hoffman 2003, Wikipedia, 2009).   
In Perl a hash variable begins with a %.  A hash holding a list of words might be denoted 
VB.NET PDF insert image library: insert images into PDF in vb.net
VB.NET PDF - Add Image to PDF Page in VB.NET. Guide VB.NET Programmers How to Add Images in PDF Document Using XDoc.PDF SDK for VB.NET.
break pdf password; add password to pdf preview
C# PDF insert image Library: insert images into PDF in C#.net, ASP
Create high resolution PDF file without image quality losing in ASP.NET application. Add multiple images to multipage PDF document in .NET WinForms.
copy protecting pdf files; pdf passwords
Text Mining Handbook 
Casualty Actuarial Society E-Forum, Spring 2010 
13 
%words.  A hash holding the counts of words from a document might be %count, and the indices 
of the hash can be the words themselves.  A specific value of a hash is referenced by using a dollar 
sign ($) in front of the hash variable name, and referencing the specific item with brackets.  For 
example, the specific word homeowner is referenced as $words{‘homeowner’}.  Thus the indices of 
the hash are strings, not numbers.  A counter for each word can be updated by referencing the word 
directly, rather than trying to locate its position in an array.  This eliminates the need to loop through 
an array to find a specific word before updating the count for the word in a document. Suppose we 
wanted to update the count for the word “actuary”.  This could be accomplished using the code 
$count(“actuary”} +=1; In general, to count words using a conventional array we would need to do 
the following: 
Loop through each response and each word in each response. 
Find all unique words, and number of unique words. 
Assign each word an index I  in an array. 
Create an array to hold count for each word. Assign word from array to index. 
Loop through record of text.  For each word in each record: 
Find the array index I for the word. 
Update count stored in counter(I) by 1. 
Continue until last word on last response is counted. 
With hashes the process requires less looping.  The procedure is: 
Loop through each  record. 
Loop through each word for each record. 
The index for the word in the hash is the word, i.e., the index for the word actuary is 
‘actuary’. Update the counter by 1. 
Continue until last word on last response is counted. 
Sample code that  was used to tabulate  the  words  in the CAS survey  response  is  shown in 
Testhash.pl.   Table  2.5 displays the frequency of each word in the GL data and  in the survey 
response. Figure 2.3 shows that an approximate linear relationship holds between the log ranks and 
the log probabilities for the survey data, as would be expected under Zipf’s law. 
7
7
Zipf’s Law provides a probability distribution for the frequency of words in text.  It is like a discrete version of the 
Pareto distribution.  A feature of Zipf’s law is that a plot of the frequency of words versus the rank of the word on a log 
scale will be approximately linear.  Perl can be used to tabulate the frequencies of words in a document or database to 
see if they follow Zipf’s law.
C# PDF: How to Create PDF Document Viewer in C#.NET with
The PDF document manipulating add-on from RasterEdge DocImage SDK for .NET is equipped with the capacity to help Visual C#.NET developers create mature and
creating password protected pdf; pdf password remover
C# PDF Sticky Note Library: add, delete, update PDF note in C#.net
PDF document processing tool, which can perform various PDF annotation works in easy ways. Using this .NET PDF annotation control, C# developers can add a
pdf password reset; crystal report to pdf with password
Text Mining Handbook 
Casualty Actuarial Society E-Forum, Spring 2010 
14 
Table 2.5 
Word Frequencies for Survey Data 
Rank 
Word 
Count P(Rank=k)
of
102          0.05  
the
80          0.04  
to
57          0.03  
and
53          0.03  
in
42          0.02  
actuaries
34          0.02  
other
27          0.01  
from
26          0.01  
for
25          0.01  
10 
erm
24          0.01  
726 
alternative
         0.00  
727 
thin
         0.00  
728 
information
         0.00  
729 
industries
         0.00  
730 
retire
         0.00  
Figure 2.3 
2.5 Term Data and Stop Words 
In order to perform the statistical procedures that analyze text for content, it is necessary to set 
up a database that contains information about the “terms” in each response.  Under this approach,
8
a “bag of words” is used to extract the important content from text.  This means that the order of 
the words in the text is discarded and only the presence/absence of particular words is recorded.  In 
8
Note that other approaches based on linguistics take sentence structure into account 
.NET PDF Document Viewing, Annotation, Conversion & Processing
Document Protect. Apply password to protect PDF. Redact text content, images, whole pages from PDF file. Add, insert PDF native annotations to PDF file.
convert pdf password protected to word online; add password to pdf file without acrobat
C# PDF Converter Library SDK to convert PDF to other file formats
NET. How to Use C#.NET XDoc.PDF Component to Convert PDF Document to Various Document and Image Forms in Visual C# .NET Application.
create password protected pdf from word; copy protecting pdf files
Text Mining Handbook 
Casualty Actuarial Society E-Forum, Spring 2010 
15 
its simplest form, the terms are the complete word collection on a particular record, but later we 
show adjustments that are made to reduce the number of terms.  One could set up a database, where 
each row is a record and each column is a word in the text on the record.  A simple database that 
can be constructed from text information is a term frequency database, where the frequency of each 
word in each record is recorded.  An example of such a “term-document” matrix is shown below. 
Table 2.6 Example of Term-Document Matrix – Survey Data 
Ourselves  cas  Not  That communicators/executive our approaches 
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
To produce the matrix of term indicators it is necessary to 1) create a list of all words in the data 
base  (which  will  be  referred  to  as  the  grand  dictionary),  2)  check  each  record  (either  claim 
description or survey response) for the presence of each word, 3) create an indicator value of 1 if the 
word is present, otherwise a zero is recorded and 4) print the results to a file for further processing. 
The code in TermDocMatrix.pl is used to perform this task.  In this example, the use of hashes 
improves the efficiency of programming the term-document matrix. 
Another preprocessing task involves the  elimination of  “stop” words.   Stop  words are very 
common words like the articles “the” and “a” that do not typically add to the informational content 
of  a text string  and  are therefore  are  eliminated.   Note that  certain types  of  natural language 
processing techniques that evaluate grammatical structures may utilize such words but the simple 
statistical approaches we are illustrating eliminate these words. 
A simple approach to the elimination of stop words is to use the substitution operator. Thus to 
eliminate the word “the”, use the code 
s/the//g, 
which substitutes the null character for the word being eliminated.  This is illustrated in the program 
“StopWords.pl” where  separate substitutions  are  performed for  the  most common stop  words 
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
Document Protect. Password: Set File Permissions. Password: Open Document. Edit Digital Highlight Text. Add Text. Add Text Box. Drawing Markups. PDF Print. Work
pdf password; copy protection pdf
DocImage SDK for .NET: Web Document Image Viewer Online Demo
control that can be created on the client side without additional add-ins and Microsoft PowerPoint: PPTX, PPS, PPSX; PDF: Portable Document Format; TIFF
adding password to pdf; add password to pdf
Text Mining Handbook 
Casualty Actuarial Society E-Forum, Spring 2010 
16 
found in our text data.  A more comprehensive approach uses a list of stop words from an external 
file  and  eliminates  each  word  in  the  list.  A  further  task  that  is  performed  in  text  mining  is 
“stemming.”  When stemming a word, the “stem” or main root of the word replaces the numerous 
grammatical permutations of the word, such as plural versus singular, past and futures tenses, etc.  
As part  of the process of stemming, synonyms are  generally replaced with  a single  term.   For 
instance,  in  the  survey  data,  some  respondents  use  the  abbreviation  ERM  when  referring  to 
enterprise risk management.  Since our two example databases are relatively small, we simply find 
the multiple versions of the same term and use the substitute operator to substitute a single term for 
the multiple versions.  Many text mining programs reference a database of root terms and synonyms 
as part of the stemming process.  We will illustrate the use of one such implementation in the 
section on text mining in R.  It should be  noted that most repositories of synonyms used for 
stemming will not contain some of the relationships that appear in a given unique database.  This is 
particularly true when misspellings are considered.  Thus the stemming part of preprocessing  must 
necessarily be tailored to a given  application and code  may  need to  be  manually developed to 
complete the task. 
2.6 Search Techniques 
One  of  the  more common  interactions  that Internet  users have  with  text  mining  is  search 
technology.  Though information retrieval (IR) technology is not a  focus of this paper, a brief 
illustration of a simple search process will be provided.  The search will utilize a similarity measure 
to compare a short text string and rank a database of text records with respect to how closely they 
match the search string. Suppose we are comparing the phrase “Credibility of the Profession” to the 
phrase  “Credibility  of  the  CAS,”  Table  2.7  shows  the  term-document  matrix  for  these  two 
expressions.  One measure of similarity between the two rows is correlation, which can be measured 
by the Pearson product moment correlation.  The correlation computed between the two rows 
below is (-.25), even though three out of the five words overlap. This is a consequence of the 
correlation coefficient measuring the strength of linear relationship, while the relationship between 
the two rows below is non-linear, as a result of the (1,0) and (0,1) cells. 
Table 2.7 
Credibility  
of
The  profession
CAS
1
1
1
0
1
1
0
1
Text Mining Handbook 
Casualty Actuarial Society E-Forum, Spring 2010 
17 
The text mining literature frequently uses the “cosine”  measure as the similarity statistic. Its 
formula is: 
(2.1)  
*
cos( )
, ,
word frequencies
*
A B
AB
A
B
.
9
It  is  customary  to  replace  the  simple  word  frequency  with  a  weighted  frequency  before 
computing  cosine  and  other  statistics.  The  weighted  frequency  statistic  is  the  TF-IDF  (term 
frequency – inverse document frequency) statistic. 
This statistic computes a weight for each term that reflects its importance. This statistic is more 
relevant when IR technology is applied to academic papers or Web pages where the “records” is an 
entire paper or the contents of one Web site.  For such “records,” many terms appear multiple 
times, whereas most  terms in our  two  examples appear  at most  once  in  a  given record.  The 
relevance  of  the  term  to  a  particular  document  will  depend  on  how  many  words  are  in  the 
document.  This is why the denominator of the TF-IDF is adjusted for the number of words in the 
document.  It is also adjusted for the number of records (or documents) containing the word (i.e., 
terms that appear on many records are down-weighted).   
The TF-IDF formula is: 
(2) 
TF-IDF(i)= Frequency(i)*N/df(i),  
where df is the frequency of word (i) in all documents 
N is the number of words in the record/document 
The TF-IDF can be computed for a phrase and for a database of records or documents.  Then, 
the records can be ranked.  The program matchline.pl in Appendix E searches a database (in this 
case the 10 line database in Top10.txt accompanying this paper).  It finds the record most similar to 
the  input  phrase  “Credibility  of  the  CAS”,  using  the  cosine,  measure,  though  other  similarity 
measures could be used instead.  The procedure used is: 
Read the database. 
Create a hash of all words on each record. 
9
The norm of a vector in the denominator of the formula is the square root of the sum of the squares of the elements.  
It appears  that the cosine differs from the more  familiar correlation coefficient in not centering the  variables  by 
subtracting their means.   
Text Mining Handbook 
Casualty Actuarial Society E-Forum, Spring 2010 
18 
Create a hash of all words in the database. 
Compute the TF-IDF statistic for each term on each record of the database. 
Read the search string. 
Compute the TF-IDF for the search string. 
Compute the cosine correlation between the TF-IDF of the search string and each record in 
the database. 
Determine which record is the closest match and print it out. 
2.7 Next Steps: Statistical Analysis to Derive Content 
To derive content from text, techniques referred to as unsupervised learning are used. With 
unsupervised learning techniques, the statistical analysis procedure has no dependent variable to fit a 
model to.  Instead the values of the variables in the data are used to group like records together.  For 
instance, in the GL claims data, all records with the words indicating a vehicle accident might be 
grouped together.  In the survey response data, all records invoking the word “credibility” might be 
grouped together.  All responses using “ERM” or “Enterprise Risk Management” might be grouped 
together, but in a separate group from those with the word “credibility”.  A procedure referred to as 
clustering is used to perform the statistical analysis of the term-document matrix to group similar 
records.  Bilisoly (2008) illustrates using the data from the Perl preprocessing (such as the term-
document matrix) within an R program to perform the required statistical analysis.  Bilisoly (2008), 
Francis (2006) and Weiss et al. (2005) provide a more detailed description of how to apply clustering 
and other unsupervised techniques to text mining applications.  The next section of this paper will 
introduce R and its use in text mining.  Though Perl can be used to preprocess the data and perform 
simple text analytics, we will introduce the R functions that read in and preprocess data as well as the 
functions that perform the statistical analysis of the data that is required for content analysis. 
3 The Software – R and the GL Database 
3.1 –Introduction to R 
One of the most popular open source analytical languages is R. This language is widely used to 
perform statistical and data mining analyses. R can be downloaded and installed on one’s computer 
from the CRAN Web Site: http://cran.r-project.org/.
Figure 3.1 displays the screen for the home 
page of the Web site.  By clicking on your operating system: Linux, Mac OS X, or Windows, under 
“Download and Install R” on the top center, you can download and install R.  While free 
documentation for using R is available on the R Web Site, there are many books that the new user 
might enjoy and benefit from.  We recommend Introductory Statistics with R by Peter Daalgard, Modern 
Applied Statistics with S by Venables and Ripley, Data Analysis and Graphics Using R by Maindonald and 
Text Mining Handbook 
Casualty Actuarial Society E-Forum, Spring 2010 
19 
Braun, and Statistics, an Introduction using R by Crawley.   
The CRAN Web Site includes a wealth of material for learning R including FAQs, tutorials, 
introductory papers. 
Of particular note is the link on the left side of the main page to Contributed Packages or 
Libraries of specialized functions.  We will need to download and install the main text mining 
package tm as well as a number of helper packages.  One of our motivations for introducing the R 
text mining procedures in this paper is that they can be confusing to figure out and produce useful 
results from, in the absence of guidance from those who have already struggled with these issues.   
3.2 The tm package 
R is a statistical computing environment best known for its ability to analyze structured data. 
The key package that makes analysis of unstructured data available to the R user that will be used 
throughout this section is the text mining package tm. Feinerer et al. (2008) provides an 
introduction to this tool. However, the authors of this paper experienced minor difficulties in 
using tm based solely on Feinerer et al. and the tm help documentation.  Note that while this 
paper was in progress, the tm package was updated and previous code had to be changed to 
conform to the current version.  One objective of this paper is to make the process easier for 
others new to the R package tm.   
One can install packages quite conveniently in R via the /Packages/Install Packages menu 
command.  Currently, the CRAN package repository features over 1,800 packages!
Several 
additional packages might be of interest to CAS members, including actuar by Vincent Goulet.
10
10
http://www.actuar-project.org/
Text Mining Handbook 
Casualty Actuarial Society E-Forum, Spring 2010 
20 
Figure 3.1 
CRAN – Comprehensive R Archive Network 
Once  required  packages  are  downloaded  and  installed,  we  first  will  access  the  libraries  of 
functions.  Note that several of the packages used for specialized graphics in this paper cannot be 
found on the CRAN Web Site.  For these, we provide documentation in our accompanying R 
programs about where  to download these packages.
11
Once they are downloaded, the user must use 
the “Install Packages from Local Zip Files” option of the Packages menu. While R has some skeletal 
GUI functionality, the R programming language is the primary vehicle for using R.  The R command 
line begins with the symbol “>”.  Examples of R code presented in this section will begin with a line 
that starts with “>” and use a different font. 
The “library” command loads the bundled functions of the desired library.  Help describing those 
functions is a short command away. 
>library(tm)  #loads library 
>help(package=tm)
The ability to replicate the examples in this paper is dependent on the user installing all packages 
that we reference in the text and code.  For example, checking the results of the “help” command 
11
We use the Tinnr editor, but our code can be read in Word. 
Documents you may be interested
Documents you may be interested