NAME
Word2vec::Bst - xmltow2v Basic Binary Search Tree Module
SYNOPSIS
use
Word2vec::Bst;
my
@sortedArray
= (
"Cookie"
,
"Lungs"
,
"Money"
,
"Veterinarian"
,
"Dog"
,
"Urn"
,
"Heart"
,
"Coffee Grounds"
);
@sortedArray
=
sort
(
@sortedArray
);
my
$sortedArrayRef
= \
@sortedArray
;
my
$arySize
=
@sortedArray
;
my
$bst
= Word2vec::Bst->new();
my
$rootNode
=
$bst
->CreateBST(
$sortedArrayRef
, 0,
$arySize
,
undef
);
$bst
->SetRootNode(
$rootNode
);
my
$node1
=
$bst
->BSTExactSearch(
$rootNode
,
"Coffee"
);
my
$node2
=
$bst
->BSTContainsSearch(
$rootNode
,
"Coffee"
);
(
"Exact Phrase Match Found - Search Word: \"Coffee\"\n"
)
if
defined
(
$node1
);
(
"Exact Phrase: \"Coffee\" Not Found\n"
)
if
!
defined
(
$node1
);
(
"Phrase Containing Word: \"Coffee\" Found\n"
)
if
defined
(
$node2
);
(
"Phrase Containing Word: \"Coffee\" Not Found\n"
)
if
!
defined
(
$node2
);
undef
(
@sortedArray
);
$bst
->DESTROY();
undef
(
$bst
);
DESCRIPTION
Word2vec::Bst is a basic binary search tree module for use with Word2vec::Xmltow2v. This module expects a sorted array passed as a function parameter (array reference) to create a balanced binary search tree.
Main Functions
new
Description:
Returns a new
'Word2vec::Bst'
module object.
Input:
None
Output:
Word2vec::Bst object.
Example:
use
Word2vec::Bst;
my
$bst
= Word2vec::Bst->new();
(
"Word2vec::Bst object creation successful\n"
)
if
defined
(
$bst
);
(
"Word2vec::Bst object creation un-successful\n"
)
if
!
defined
(
$bst
);
(
"Removing Tree From Memory\n"
)
if
defined
(
$bst
);
$bst
->DESTROY()
if
defined
(
$bst
);
undef
(
$bst
);
DESTROY
Description:
Removes binary search tree from memory.
Input:
None
Output:
None
Example:
See above example
for
"new"
function.
Note: Destroy function is also automatically called during global destruction
when
exiting the program.
CreateTree
Description:
Creates binary search tree
with
required function parameters and sets member variable root node in
'Word2vec::Bst'
object.
Note: The array must be sorted
before
calling this method to create a balanced tree.
Input:
$arrayReference
-> Reference to an array containing sorted string data.
$startIndex
-> Beginning
index
of sorted array which the function incorporates into the binary tree.
$endIndex
-> Last
index
of the sorted array which the function incorporates into the binary tree.
$parentNode
-> Parent node parameter of type
'Word2vec::Node'
. Set to
'undef'
during tree instantiation.
Output:
$value
->
'0'
if
successful /
'-1'
if
un-successful.
Example:
use
Word2vec::Bst;
my
@sortedArray
= (
"Cookie"
,
"Lungs"
,
"Money"
,
"Veterinarian"
,
"Dog"
,
"Urn"
,
"Heart"
,
"Coffee Grounds"
);
@sortedArray
=
sort
(
@sortedArray
);
my
$sortedArrayRef
= \
@sortedArray
;
my
$arySize
=
@sortedArray
;
my
$bst
= Word2vec::Bst->new();
my
$result
=
$bst
->CreateTree(
$sortedArrayRef
, 0,
$arySize
,
undef
);
(
"Binary Search Tree Created Successfully\n"
)
if
$result
== 0;
(
"Binary Search Tree Creation Un-Successful\n"
)
if
$result
== -1;
$bst
->DESTROY()
if
defined
(
$bst
);
undef
(
$bst
);
CreateBST
Description:
Creates binary search tree
with
required function parameters. Returns the root node.
Note: The array must be sorted
before
calling this method to create a balanced tree.
Input:
$arrayReference
-> Reference to an array containing sorted string data.
$startIndex
-> Beginning
index
of sorted array which the function incorporates into the binary tree.
$endIndex
-> Last
index
of the sorted array which the function incorporates into the binary tree.
$parentNode
-> Parent node parameter of type
'Word2vec::Node'
. Set to
'undef'
during tree instantiation.
Output:
Word2vec::Node -> Binary Search Tree root node or
'undef'
.
Example:
use
Word2vec::Bst;
my
@sortedArray
= (
"Cookie"
,
"Lungs"
,
"Money"
,
"Veterinarian"
,
"Dog"
,
"Urn"
,
"Heart"
,
"Coffee Grounds"
);
@sortedArray
=
sort
(
@sortedArray
);
my
$sortedArrayRef
= \
@sortedArray
;
my
$arySize
=
@sortedArray
;
my
$bst
= Word2vec::Bst->new();
my
$rootNode
=
$bst
->CreateBST(
$sortedArrayRef
, 0,
$arySize
,
undef
);
$bst
->SetRootNode(
$rootNode
);
$bst
->DESTROY()
if
defined
(
$bst
);
undef
(
$bst
);
BSTContainsSearch
Description:
Searches binary search tree nodes to see
if
'node->data'
contains passed string parameter,
beginning
with
the passed node parameter and propagates down the tree
until
found.
Input:
Word2vec::Node -> Starting tree node to search. (ie. Begin at root node)
string -> Search word/phrase.
Output:
Word2vec::Node -> Returns binary search tree node or
'undef'
if
not found.
Example:
use
Word2vec::Bst;
my
@sortedArray
= (
"Cookie"
,
"Lungs"
,
"Money"
,
"Veterinarian"
,
"Dog"
,
"Urn"
,
"Heart"
,
"Coffee Grounds"
);
@sortedArray
=
sort
(
@sortedArray
);
my
$sortedArrayRef
= \
@sortedArray
;
my
$arySize
=
@sortedArray
;
my
$bst
= Word2vec::Bst->new();
my
$result
=
$bst
->CreateTree(
$sortedArrayRef
, 0,
$arySize
,
undef
);
(
"Binary Search Tree - Created Successfully\n"
)
if
$result
== 0;
(
"Binary Search Tree - Creation Un-successful\n"
)
if
$result
== -1;
die
""
if
$result
== -1;
my
$node
=
$bst
->BSTContainsSearch(
$rootNode
,
"Coffee"
);
(
"Phrase Containing Word: \"Coffee\" Found\n"
)
if
defined
(
$node
);
(
"Phrase Containing Word: \"Coffee\" Not Found\n"
)
if
!
defined
(
$node
);
undef
(
@sortedArray
);
$bst
->DESTROY();
undef
(
$bst
);
BSTExactSearch
Description:
Searches binary search tree
for
passed string parameter, beginning
with
passed node and propagates
down the tree
until
found.
Input:
Word2vec::Node -> Starting tree node to search. (ie. Begin at root node)
string -> Search word/phrase.
Output:
Word2vec::Node -> Returns binary search tree node or
'undef'
if
not found.
Example:
use
Word2vec::Bst;
my
@sortedArray
= (
"Cookie"
,
"Lungs"
,
"Money"
,
"Veterinarian"
,
"Dog"
,
"Urn"
,
"Heart"
,
"Coffee Grounds"
);
@sortedArray
=
sort
(
@sortedArray
);
my
$sortedArrayRef
= \
@sortedArray
;
my
$arySize
=
@sortedArray
;
my
$bst
= Word2vec::Bst->new();
my
$result
=
$bst
->CreateTree(
$sortedArrayRef
, 0,
$arySize
,
undef
);
(
"Binary Search Tree - Created Successfully\n"
)
if
$result
== 0;
(
"Binary Search Tree - Creation Un-successful\n"
)
if
$result
== -1;
die
""
if
$result
== -1;
my
$node
=
$bst
->BSTExactSearch(
$rootNode
,
"Money"
);
(
"Exact Phrase Match Found - Search Word: \"Money\"\n"
)
if
defined
(
$node
);
(
"Exact Phrase: \"Money\" Not Found\n"
)
if
!
defined
(
$node
);
undef
(
@sortedArray
);
$bst
->DESTROY();
undef
(
$bst
);
DeleteBSTNodes
Description:
Recursive function that deletes all parameter node's left and right children that propagates downward. Called by
DESTROY() function to remove tree from memory.
Input:
Word2vec::Node -> Starting node of tree to remove from memory. (ie. root node)
Output:
None
Example:
use
Word2vec::Bst;
my
@sortedArray
= (
"Cookie"
,
"Lungs"
,
"Money"
,
"Veterinarian"
,
"Dog"
,
"Urn"
,
"Heart"
,
"Coffee Grounds"
);
@sortedArray
=
sort
(
@sortedArray
);
my
$sortedArrayRef
= \
@sortedArray
;
my
$arySize
=
@sortedArray
;
my
$bst
= Word2vec::Bst->new();
my
$result
=
$bst
->CreateTree(
$sortedArrayRef
, 0,
$arySize
,
undef
);
(
"Binary Search Tree - Created Successfully\n"
)
if
$result
== 0;
(
"Binary Search Tree - Creation Un-successful\n"
)
if
$result
== -1;
die
""
if
$result
== -1;
(
"Destroying Binary Search Tree\n"
);
$bst
->DESTROY();
undef
(
@sortedArray
);
undef
(
$bst
);
Accessor Functions
GetDebugLog
Description:
Returns the _debugLog member variable set during Word2vec::Bst object initialization of new function.
Input:
None
Output:
$value
-> 0 = False, 1 = True
Example:
use
Word2vec::Bst;
my
$bst
= Word2vec::Bst->new();
my
$debugLog
=
$bst
->GetDebugLog();
(
"Debug Logging Enabled\n"
)
if
$debugLog
== 1;
(
"Debug Logging Disabled\n"
)
if
$debugLog
== 0;
undef
(
$bst
);
GetWriteLog
Description:
Returns the _writeLog member variable set during Word2vec::Bst object initialization of new function.
Input:
None
Output:
$value
-> 0 = False, 1 = True
Example:
use
Word2vec::Bst;
my
$bst
= Word2vec::Bst->new();
my
$writeLog
=
$bst
->GetWriteLog();
(
"Write Logging Enabled\n"
)
if
$writeLog
== 1;
(
"Write Logging Disabled\n"
)
if
$writeLog
== 0;
undef
(
$bst
);
GetRootNode
Description:
Returns binary search tree root node.
Input:
None
Output:
Word2vec::Node -> Binary Search Tree Root Node
Example:
use
Word2vec::Bst;
my
@sortedArray
= (
"Cookie"
,
"Lungs"
,
"Money"
,
"Veterinarian"
,
"Dog"
,
"Urn"
,
"Heart"
,
"Coffee Grounds"
);
@sortedArray
=
sort
(
@sortedArray
);
my
$sortedArrayRef
= \
@sortedArray
;
my
$arySize
=
@sortedArray
;
my
$bst
= Word2vec::Bst->new();
my
$result
=
$bst
->CreateTree(
$sortedArrayRef
, 0,
$arySize
,
undef
);
(
"Binary Search Tree - Created Successfully\n"
)
if
$result
== 0;
(
"Binary Search Tree - Creation Un-successful\n"
)
if
$result
== -1;
die
""
if
$result
== -1;
my
$rootNode
=
$bst
->GetRootNode();
(
"BST Root Node Exists\n"
)
if
defined
(
$rootNode
);
(
"BST Root Node Does Not Exist\n"
)
if
!
defined
(
$rootNode
);
(
"Root Node Contains Data: "
.
$rootNode
->data .
"\n"
)
if
defined
(
$rootNode
) &&
defined
(
$rootNode
->data );
(
"Destroying Binary Search Tree\n"
);
$bst
->DESTROY();
undef
(
@sortedArray
);
undef
(
$bst
);
Mutator Functions
SetRootNode
Description:
Sets binary search tree root node to passed node parameter.
Input:
Word2vec::Node -> Binary Search Tree node which will be set to the root node of the tree.
Output:
None
Example:
use
Word2vec::Bst;
my
@sortedArray
= (
"Cookie"
,
"Lungs"
,
"Money"
,
"Veterinarian"
,
"Dog"
,
"Urn"
,
"Heart"
,
"Coffee Grounds"
);
@sortedArray
=
sort
(
@sortedArray
);
my
$sortedArrayRef
= \
@sortedArray
;
my
$arySize
=
@sortedArray
;
my
$bst
= Word2vec::Bst->new();
my
$result
=
$bst
->CreateTree(
$sortedArrayRef
, 0,
$arySize
,
undef
);
(
"Binary Search Tree - Created Successfully\n"
)
if
$result
== 0;
(
"Binary Search Tree - Creation Un-successful\n"
)
if
$result
== -1;
die
""
if
$result
== -1;
my
$rootNode
=
$bst
->GetRootNode();
(
"BST Root Node Exists\n"
)
if
defined
(
$rootNode
);
(
"BST Root Node Does Not Exist\n"
)
if
!
defined
(
$rootNode
);
$bst
->SetRootNode(
$rootNode
)
if
defined
(
$rootNode
);
(
"Destroying Binary Search Tree\n"
);
$bst
->DESTROY();
undef
(
@sortedArray
);
undef
(
$bst
);
Author
Clint Cuffy, Virginia Commonwealth University
COPYRIGHT
Copyright (c) 2016
Bridget T McInnes, Virginia Commonwealth University
btmcinnes at vcu dot edu
Clint Cuffy, Virginia Commonwealth University
cuffyca at vcu dot edu
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to:
The Free Software Foundation, Inc.,
59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.