[FREE PDF sample] (Ebook) Advanced Data Analytics Using Python: With Machine Learning, Deep Learning and NLP Examples by Mukhopadhyay, Sayan ISBN 9781484234495, 1484234499 ebooks
[FREE PDF sample] (Ebook) Advanced Data Analytics Using Python: With Machine Learning, Deep Learning and NLP Examples by Mukhopadhyay, Sayan ISBN 9781484234495, 1484234499 ebooks
com
DOWLOAD EBOOK
ebooknice.com
ebooknice.com
Advanced
Data Analytics
Using Python
With Machine Learning,
Deep Learning and NLP Examples
—
Sayan Mukhopadhyay
Advanced Data
Analytics Using
Python
With Machine Learning, Deep
Learning and NLP Examples
Sayan Mukhopadhyay
Advanced Data Analytics Using Python
Sayan Mukhopadhyay
Kolkata, West Bengal, India
Chapter 1: Introduction������������������������������������������������������������������������1
Why Python?���������������������������������������������������������������������������������������������������������1
When to Avoid Using Python���������������������������������������������������������������������������������2
OOP in Python�������������������������������������������������������������������������������������������������������3
Calling Other Languages in Python���������������������������������������������������������������������12
Exposing the Python Model as a Microservice���������������������������������������������������14
High-Performance API and Concurrent Programming����������������������������������������17
v
Table of Contents
Elasticsearch�������������������������������������������������������������������������������������������������������31
Connection Layer API�������������������������������������������������������������������������������������33
Neo4j Python Driver��������������������������������������������������������������������������������������������34
neo4j-rest-client�������������������������������������������������������������������������������������������������35
In-Memory Database������������������������������������������������������������������������������������������35
MongoDB (Python Edition)����������������������������������������������������������������������������������36
Import Data into the Collection����������������������������������������������������������������������36
Create a Connection Using pymongo�������������������������������������������������������������37
Access Database Objects������������������������������������������������������������������������������37
Insert Data�����������������������������������������������������������������������������������������������������38
Update Data���������������������������������������������������������������������������������������������������38
Remove Data�������������������������������������������������������������������������������������������������38
Pandas����������������������������������������������������������������������������������������������������������������38
ETL with Python (Unstructured Data)������������������������������������������������������������������40
E-mail Parsing�����������������������������������������������������������������������������������������������40
Topical Crawling��������������������������������������������������������������������������������������������42
vi
Table of Contents
vii
Table of Contents
viii
Table of Contents
Index�������������������������������������������������������������������������������������������������181
ix
About the Author
Sayan Mukhopadhyay has more than
13 years of industry experience and has been
associated with companies such as Credit
Suisse, PayPal, CA Technologies, CSC, and
Mphasis. He has a deep understanding of
applications for data analysis in domains such
as investment banking, online payments,
online advertisement, IT infrastructure, and
retail. His area of expertise is in applying
high-performance computing in distributed
and data-driven environments such as real-time analysis, high-frequency
trading, and so on.
He earned his engineering degree in electronics and instrumentation
from Jadavpur University and his master’s degree in research in
computational and data science from IISc in Bangalore.
xi
About the Technical Reviewer
Sundar Rajan Raman has more than 14 years
of full stack IT experience in machine
learning, deep learning, and natural
language processing. He has six years
of big data development and architect
experience, including working with Hadoop
and its ecosystems as well as other NoSQL
technologies such as MongoDB and
Cassandra. In fact, he has been the technical
reviewer of several books on these topics.
He is also interested in strategizing using Design Thinking principles
and in coaching and mentoring people.
xiii
Acknowledgments
Thanks to Labonic Chakraborty (Ripa) and Kusumika Mukherjee.
xv
CHAPTER 1
Introduction
In this book, I assume that you are familiar with Python programming.
In this introductory chapter, I explain why a data scientist should choose
Python as a programming language. Then I highlight some situations
where Python is not a good choice. Finally, I describe some good practices
in application development and give some coding examples that a data
scientist needs in their day-to-day job.
W
hy Python?
So, why should you choose Python?
2
Chapter 1 Introduction
O
OP in Python
Before proceeding, I will explain some features of object-oriented
programming (OOP) in a Python context.
The most basic element of any modern application is an object. To
a programmer or architect, the world is a collection of objects. Objects
consist of two types of members: attributes and methods. Members can be
private, public, or protected. Classes are data types of objects. Every object
is an instance of a class. A class can be inherited in child classes. Two
classes can be associated using composition.
In a Python context, Python has no keywords for public, private, or
protected, so encapsulation (hiding a member from the outside world)
is not implicit in Python. Like C++, it supports multilevel and multiple
inheritance. Like Java, it has an abstract keyword. Classes and methods
both can be abstract.
The following code is an example of a generic web crawler that is
implemented as an airline’s web crawler on the Skytrax site and as a retail
crawler for the Mouthshut.com site. I’ll return to the topic of web crawling
in Chapter 2.
baseURLString = "base_url"
airlinesString = "air_lines"
limitString = "limits"
3
Chapter 1 Introduction
baseURl = ""
airlines = []
limit = 10
@abstractmethod
def collectThoughts(self):
print "Something Wrong!! You're calling
an abstract method"
@classmethod
def getConfig(self, configpath):
#print "In get Config"
config = {}
conf = open(configpath)
for line in conf:
if ("#" not in line):
words = line.strip().split('=')
config[words[0].strip()] = words[1].
strip()
#print config
self.baseURl = config[self.baseURLString]
if config.has_key(self.airlinesString):
self.airlines = config[self.
airlinesString].split(',')
if config.has_key(self.limitString):
self.limit = int(config[self.limitString])
#print self.airlines
4
Chapter 1 Introduction
5
Chapter 1 Introduction
class AirLineReviewCollector(SkyThoughtCollector):
6
Chapter 1 Introduction
def collectThoughts(self):
#print "Collecting Thoughts"
for al in AirLineReviewCollector.airlines:
count = 0
while count < AirLineReviewCollector.limit:
count = count + 1
url = ''
7
Chapter 1 Introduction
if count == 1:
url = AirLineReviewCollector.
baseURl + al + ".htm"
else:
url = AirLineReviewCollector.
baseURl + al + "_"+str(count)+
".htm"
soup = BeautifulSoup.BeautifulSoup
(super(AirLineReviewCollector,self).
downloadURL(url))
blogs = soup.findAll("p",
{"class":"text2"})
tables = soup.findAll("table",
{"width":"192"})
review_headers = soup.findAll("td",
{"class":"airport"})
for i in range(len(tables)-1):
(name, surname, year, month,
date, country) = self.parse
SoupHeader(review_headers[i])
(stat, over_all, money_value,
seat_comfort, staff_service,
catering, entertainment,
recomend) = self.parseSoup
Table(tables[i])
blog = str(blogs[i]).
split(">")[1].split("<")[0]
args = [al, name, surname,
year, month, date, country,
stat, over_all, money_value,
seat_comfort, staff_service,
catering, entertainment,
recomend, blog]
8
Chapter 1 Introduction
super(AirLineReviewCo
llector,self).print_
args(args)
class RetailReviewCollector(SkyThoughtCollector):
def __init__(self, configpath):
#print "In Config"
super(RetailReviewCollector,self).getConfig(configpath)
def collectThoughts(self):
soup = BeautifulSoup.BeautifulSoup(super(RetailRev
iewCollector,self).downloadURL(RetailReviewCollect
or.baseURl))
lines = soup.findAll("a",{"style":
"font-size:15px;"})
links = []
for line in lines:
if ("review" in str(line)) & ("target" in
str(line)):
ln = str(line)
link = ln.split("href=")[-1].split
("target=")[0].replace("\"","").
strip()
links.append(link)
9
Chapter 1 Introduction
comment = bleach.clean(str(soup.findAll("di
v",{"itemprop":"description"})[0]),tags=[],
strip=True)
tables = soup.findAll("table",
{"class":"smallfont space0 pad2"})
parking = ambience = range = economy =
product = 0
for table in tables:
if "Parking:" in str(table):
rows = table.findAll("tbody")
[0].findAll("tr")
for row in rows:
if "Parking:" in
str(row):
parking =
str(row).
count("read-
barfull")
if "Ambience" in
str(row):
ambience =
str(row).
count("read-
barfull")
if "Store" in str(row):
range = str(row).
count("read-
barfull")
10
Chapter 1 Introduction
author = bleach.clean(soup.findAll("spa
n",{"itemprop":"author"})[0], tags=[],
strip=True)
date = soup.findAll("meta",{"itemprop":"dat
ePublished"})[0]["content"]
args = [date, author,str(parking),
str(ambience),str(range), str(economy),
str(product), comment]
super(RetailReview
Collector,self).print_
args(args)
if __name__ == "__main__":
if sys.argv[1] == 'airline':
instance = AirLineReviewCollector(sys.argv[2])
instance.collectThoughts()
else:
if sys.argv[1] == 'retail':
instance = RetailReviewCollector(sys.argv[2])
instance.collectThoughts()
11
Chapter 1 Introduction
else:
print "Usage is"
print sys.argv[0], '<airline/retail>',
"<Config File Path>"
base_url = http://www.airlinequality.com/Forum/
#base_url = http://www.mouthshut.com/product-reviews/Mega-Mart-
Bangalore-reviews-925103466
#base_url = http://www.mouthshut.com/product-reviews/Megamart-
Chennai-reviews-925104102
air_lines = emrts,brit_awys,ual,biman,flydubai
limits = 10
I’ll now discuss the previous code in brief. It has a root class that is an
abstract class. It contains essential attributes such as a base URL and a
page limit; these are essential for all child classes. It also contains common
logic in class method functions such as the download URL, print output,
and read configuration. It also has an abstract method collectThoughts,
which must be implemented in child classes. This abstract method is
passing on a common behavior to every child class that all of them must
collect thoughts from the Web. Implementations of this thought collection
are child specific.
12
Chapter 1 Introduction
available in R. So, you can call R code from Python using the rpy2 module,
as shown here:
import rpy2.robjects as ro
ro.r('data(input)')
ro.r('x <-HoltWinters(input)')
Sometimes you need to call Java code from Python. For example,
say you are working on a name entity recognition problem in the field of
natural language processing (NLP); some text is given as input, and you
have to recognize the names in the text. Python’s NLTK package does have
a name entity recognition function, but its accuracy is not good. Stanford
NLP is a better choice here, which is written in Java. You can solve this
problem in two ways.
import subprocess
subprocess.call(['java','-cp','*','edu.
stanford.nlp.sentiment.SentimentPipeline',
'-file','foo.txt'])
nlp = StanfordCoreNLP('http://127.0.0.1:9000')
output = nlp.annotate(sentence, properties={
"annotators": "tokenize,ssplit,parse,sentiment",
"outputFormat": "json",
# Only split the sentence at End Of Line.
We assume that this method only takes in one
single sentence.
"ssplit.eolonly": "true",
13
Chapter 1 Introduction
app = Flask(__name__)
CORS(app)
@app.before_request
def before():
db = create_engine('sqlite:///score.db')
metadata = MetaData(db)
14
Chapter 1 Introduction
client = MongoClient()
g.db = client.frequency
g.gi = pygeoip.GeoIP('GeoIP.dat')
sess = tf.Session()
new_saver = tf.train.import_meta_graph('model.obj.meta')
new_saver.restore(sess, tf.train.latest_checkpoint('./'))
all_vars = tf.get_collection('vars')
g.dropped_features = str(sess.run(all_vars[0]))
g.b = sess.run(all_vars[1])[0]
return
def get_hour(timestamp):
return dt.datetime.utcfromtimestamp(timestamp / 1e3).hour
15
Chapter 1 Introduction
@app.route('/predict', methods=['POST'])
def predict():
input_json = request.get_json(force=True)
features = ['size','domain','client_time','device',
'ad_position','client_size', 'ip','root']
predicted = 0
feature_value = ''
for f in features:
if f not in g.dropped_features:
if f == 'ip':
feature_value = str(ipaddress.
IPv4Address(ipaddress.ip_address
(unicode(request.remote_addr))))
else:
feature_value = input_json.get(f)
if f == 'ip':
if 'geo' not in g.dropped_features:
geo = g.gi.country_name_by_
addr(feature_value)
predicted = predicted + get_
value(g.session, g.scores,
'geo', geo)
if 'frequency' not in g.dropped_
features:
res = g.db.frequency.find_
one({"ip" : feature_value})
freq = 1
if res is not None:
freq = res['frequency']
predicted = predicted + get_
value(g.session, g.scores,
'frequency', str(freq))
16
Chapter 1 Introduction
if f == 'client_time':
feature_value = get_
hour(int(feature_value))
predicted = predicted + get_value(g.
session, g.scores, f, feature_value)
return str(math.exp(predicted + g.b)-1)
app.run(debug = True, host ='0.0.0.0')
17
Random documents with unrelated
content Scribd suggests to you:
CHAPTER XXIII.
A REPRISAL OF TREACHERY.
Mrs. Harding glances through the clipping and hands it back with
a quizzical smile.
“So you are the prominent and gallant member of the Cuban
revolutionary society referred to?” she infers.
“Not so loud!” cautions Don Manada. “We may be overheard.
What think you of the voyage now, senora?”
“I fear it is a bit too dangerous,” replies Isabel, with a yawn. “We
should never reach Cuba.”
“Trust me,” assents Don Manada, complacently. “Once on the high
seas, the Isabel will lead the Spanish warships a pretty chase.”
“Ah, the name of your schooner is the Isabel?”
“Of our yacht—yes. Is it not happily named?”
“Perhaps so,” answers Mrs. Harding, with an enigmatic expression
in her lustrous eyes. “And where should I find your yacht in case I
should at the last moment decide to accept your offer of a merry
voyage to the tropics?”
“My yacht? I should conduct you to it,” says Don Manada in some
surprise.
“Oh, no; that would not do,” objects Isabel. “I should be driven to
it veiled just preceding its departure.”
Don Manada looks around the arcade, but there is no one within
twenty feet of their table.
“North river, foot of 23d street,” he whispers. “You will go?” as
Isabel appears to be hesitating mid conflicting emotions.
“You will promise not to make love to me during the entire
voyage?”
“I will promise anything, senora, though you have imposed an
unhappy obligation.”
“Then I think I will say—yes.”
“Bueno!” cries the delighted Don Manada, and, seizing Isabel’s
hand, he covers it with passionate kisses.
“Oh, by the way, what time do you sail?”
“At 5 o’clock.”
“Very well. I will send final word to your hotel in the morning.
Now, leave me to dream over my folly,” says Mrs. Harding,
disengaging the hand which Don Manada still tenderly holds.
Then, as the latter goes off to the wine-room to submerge his
happiness in champagne, Isabel leans back in her chair and laughs
softly. “The fool,” she sneers. “Well, all men are fools—all but one.”
“And that one?” inquires a voice behind her. She looks up startled,
to meet the calm gaze of a man of perhaps 50, with dark hair and
mustache slightly tinged with gray and the distinct air of a soldier.
“Ah, who but yourself?” returns Isabel composedly. “Sit down,
Gen. Murillo. I have much to tell you.”
The intelligence is plainly of a pleasing nature. Gen. Murillo
murmurs “Bueno!” more than once as he listens, and when she
finishes he remarks approvingly: “You have done well and may count
on my gratitude.”
“Gracias,” responds Isabel. “That is about the extent of my
Spanish, General.”
“Ah, but you will learn readily. It is simple. Hist! a gentleman
approaches. It were well if we be seen little together to-night. Until
the morrow then, adios.”
Gen. Murillo moves off toward the swirl of dancers and Isabel
surveys with an air of recognition a gentleman in the costume of
Don Caesar de Bazan, who has descended to the arcade by the
north stairway and is coming slowly toward her. Don Caesar looks
curiously after the departing form of the Spaniard; then, dropping
into a chair beside Isabel, he tosses off his mask and asks
carelessly: “Well, my dear Isabel, when do you leave for Cuba?”
“For Cuba?” repeats Mrs. Harding in simulated surprise.
“Exactly. After a glance at the gentleman who just left you I do
not need to be enlightened as to the diplomatic duties to which you
alluded last night.”
“Well, Phillip, I have few secrets that you do not share,” Isabel
says sweetly; “I leave for Cuba to-morrow.”
“So soon,” he murmurs courteously.
“The sooner the better. Every day I am near you makes eventual
separation the harder. I know that you care nothing for me,” she
goes on, her cheeks flushed crimson. “Don’t interrupt me,” as Van
Zandt seeks to interpose a protest. “I know that you care nothing for
me, not in the way I would have you feel. I have your friendship,
yes, beyond that I am nothing to you. And I—I love you, Phillip—
love you as I never expected to love a man. I make the avowal
without shame, for I know there is no possibility of a change in your
sentiments toward me. And I am going away—to-morrow,” half sobs
the woman, as she covers her face with her hands.
Van Zandt lays his hand upon Isabel’s head and smooths the dark
tresses sympathetically. She pushes the hand away.
“Courage! Tears ill become a diplomat,” declares Van Zandt. “This
is a dreary world. We seldom attain our heart’s desire, even though
the object we seek be a lowly one. Will you have some wine?” Isabel
shakes her head. She has dried her eyes and has relapsed into an
apathetic melancholy.
Van Zandt signals to a waiter. “A little wine will help lighten our
hearts,” he tells Mrs. Harding; “for believe me, mine is not less heavy
than yours. Cheer up and we will drink a toast to all unrequited
love.”
Isabel gives him a swift look of surprise. “You heard?” she
demands.
“I heard nothing,” he replies, smilingly. “What has given rise to
your question?”
“’Tis less than an hour since I offered that very toast. I have had a
proposal to-night.”
“Indeed? And you rejected it?”
“Can you ask such a question. The world is full of Don Manadas,
but there is only one—”
“So? The swarthy gentleman, with the curious white mustachios?”
interrupts Van Zandt. “I noticed you talking with him.”
“I had rejected him twice before, but his persistence is worthy of a
better cause. To-night I promised to accompany him on a
filibustering expedition to Cuba. Think of it! The fool!” sneers Isabel.
“And you will not go.”
“Most certainly not. I only half-promised. To-morrow I shall send
word that I have changed my mind.”
“And meanwhile you have accomplished something toward your
new duties, eh?” remarks Van Zandt. If Isabel Harding could read
the dark, handsome face that she loves so well, she would know
that she has lost forever the esteem of Phillip Van Zandt.
“You have betrayed the man who trusted you,” continues Van
Zandt in the same quiet and impassive voice.
“Betrayed him? And what if I did?” flashes Isabel passionately.
“Call it treachery if you will. I say it is only a reprisal of treachery.
Take me out of here, Phillip. I am sick of these lights and the music
and the scent of the flowers.”
“I will see you to a carriage,” says Van Zandt, quietly.
Ten minutes later he says good-by to her, as he prepares to close
the carriage door.
“Some day, Phillip, you will realize how much I love you,” Isabel
whispers, as she presses to her lips the hand he mechanically gives
her.
Words, words, words; but destined to have a tragic fulfillment!
Van Zandt looks after the retreating carriage with a darkening
brow. “Call it treachery if you will,” he repeats, grimly. “By George!
I’ll spike her ladyship’s guns! The cause of liberty shall not be
jeopardized by the indiscretion of its friends or the machinations of
its enemies!”
As he turns and re-enters the garden a man steps to a waiting
cab, and, indicating the carriage which is bearing off Isabel Harding,
he whispers to his driver: “Keep that rig in view till it stops.
Understand?”
CHAPTER XXIV.
About 9:30 of the morning following the French ball Phillip Van
Zandt drops into his favorite seat in the dining-room of the St. James
hotel and picks up the morning paper.
Scarcely had he unfolded it when his attention was attracted by
two persons seated at the table beyond him. They are Cyrus Felton
and Louise Hathaway, and the latter never looked fairer than on this
bright March morning.
“Ah, my divinity of the ball,” he murmurs. “By Eros! She is superb.
Hair, a mass of gold and the sunlight gives it just the right effect.
Purity and innocence are in those blue eyes and in every line of the
face. Knowing no evil and fearing none, and yet with the self-poise
of a queen. It almost restores one’s confidence in humanity to look
upon such a face.
“I would be glad indeed to know her, but the opportunity for an
introduction is not likely to arise. I could scarcely presume on last
night’s meeting, and besides, she would hold me to my word. What
impulse possessed her to remove her mask at my request? I’ll wager
she regretted it an instant later. Well, she did not see my face, so I
may devour her visually in perfect safety.
“And her companion?” Van Zandt goes on meditatively. “Not her
husband, assuredly. Too old for that. More likely her father, or
perhaps her guardian. They are going to Cuba, so she told me. Well,
I am going to Cuba, too. I may meet her there. Friendships are
easily cultivated in a foreign land. My dear Van Zandt, is it possible
that you are becoming interested in a woman? Careful; you forget
who you are,” he concludes bitterly, and stares moodily out upon the
crowded street.
Mr. Felton and Miss Hathaway are breakfasting leisurely,
unconscious of the interest they have aroused in the gentleman at
the next table. Mr. Felton is scanning the columns of the
Hemisphere, with particular reference to the full dispatches from
Cuba and Madrid. Suddenly he drops the paper with the
exclamation: “This is very unfortunate!”
“What is unfortunate?” inquires Miss Hathaway, sipping her coffee.
“Here is a dispatch from Havana, stating that the government has
ordered a complete blockade of the island and that all steamship
engagements to and from Cuba have been canceled for an indefinite
period.”
Miss Hathaway looks up in mild dismay. “Then we cannot leave
Saturday,” she says.
“It would seem not. Ah, here is something more. The newspaper
has looked up the report at the New York end and finds it to be true.
The steamer City of Havana of the Red Star line, this paper says, will
probably be the last passenger vessel to leave New York for Cuba
until the blockade is raised.”
“But can we not go on that?”
Mr. Felton reads on: “The City of Havana sails to-day at 11
o’clock.” Then he glances at his watch. “It is now nearly 10. Perhaps
we can make it. Wait, I will ascertain from the clerk.”
Mr. Felton rises, and as he turns to leave the dining-room Van
Zandt gets a view of his face, and he starts as if from a nightmare.
“That face again!” he breathes. “That face, which has haunted my
dreams and has been before me in my waking hours! And her
father! Merciful heaven, it cannot be. There is a limit to fate’s
grotesquerie.”
Miss Hathaway glances in Van Zandt’s direction and their eyes
meet. It is only an instant, but it leaves the girl somewhat confused
and accentuates the young man’s disorder.
At this juncture Mr. Felton returns with the information that they
have little more than an hour to reach Barclay Street and the North
River, from which point the steamer leaves.
“Then let us go at once. I am ready,” Louise says, “after I have
scribbled a note of explanation to Mr. Ashley. He was to have
lunched with us at 1 o’clock, you know.”
After they have gone Van Zandt drops his head upon his hand,
and for the space of ten minutes remains plunged in thought. Then,
to the waiter’s surprise, he leaves his breakfast untouched and quits
the dining-room.
In the office he sees Mr. Felton settling his bill. Outside the hotel a
line of “cabbies” are drawn up and these Van Zandt looks over
critically, finally signaling to one of them, a jovial, red visaged
Irishman.
“Riley, a lady and gentleman are going from this hotel to Barclay
Street and North River within a few minutes. I want you to have the
job of carrying them,” says Van Zandt.
“I’m agreeable, sor.”
“After you have secured the job, I want you to miss the steamer
which sails for Cuba at 11 o’clock. Understand?”
Riley puckers up his mouth for a whistle which he decides to
suppress.
“Sure that would not be hard, sor. It’s tin o’clock now.”
“Here they come now. Look to your job,” says Van Zandt.
Mr. Felton and Miss Hathaway emerge from the hotel, followed by
a porter with their trunks. Amid a chorus of “Keb, sir!” “Keb!” “Keb!”
in which Riley sings a heavy bass, Mr. Felton looks about him in
perplexity, and finally, as though annoyed by the importunities of
Riley, who is rather overdoing his part, he selects a rival “cabbie.”
Riley turns somewhat sheepishly to Van Zandt, who looks after the
disappearing carriage in vexation.
“Shall I run them down, sor?” asks the Irishman, with a wink
which means volumes.
“Can you prevent them reaching the pier?”
“Sure, I think so, your honor.”
“I’ll give you $50 if you do it.”
“Be hivens! I’d murdther thim for that,” exclaims Riley, as he leaps
to his box.
The two cabs proceeded at a smart pace down Fifth Avenue, but
as the congested trucking district is reached progress becomes
slower.
“Can you make the pier in time?” Mr. Felton asks the driver
anxiously, consulting his watch for the dozenth time.
“Sure thing,” is the confident response.
Neither the driver nor his passengers see the cab behind them.
Riley has his reins grasped tightly in one hand, his whip in the other,
and the expression on his round red face indicates that he is
preparing for something out of the ordinary.
They have now reached lower West Broadway, and before Mr.
Felton’s driver knows it he has become entangled in a rapidly
created blockade.
Progress now is snail-like. Mr. Felton becomes nervous, while Miss
Hathaway finds much to interest her in the seemingly inextricable
tangle of trucks, drays, horse cars, cabs, etc. Suddenly a space of a
dozen feet or so opens before them, and the driver is about to take
advantage of it when Riley gives his horse a cut with the whip and
bumps by, nearly taking a wheel off the other cab.
Then ensues a duel of that picturesque profanity without which no
truck blockade could possibly be disentangled.
Riley, who is ordinarily one of the most good-natured of mortals,
becomes suddenly sensitive under the abuse heaped upon him and
dragging the rival cabman from his box he proceeds to handle him in
a manner that affords keen delight to the onlookers.
It is a snappy morning and Riley rather enjoys the exercise he is
taking. But it is suddenly ended by a brace of policemen, who
struggle upon the scene and pounce upon the combatants.
Explanations are then in order and peace is restored. No one is
arrested.
Riley is willing to break away, for as he looks around he notes with
satisfaction that the blockade has increased to unusual proportions
and he awaits serenely its slow unraveling.
Meanwhile Mr. Felton is invoking the vials of wrath upon all
cabmen, past, present and to come. It is nearly 11:30 when they
reach the pier and, as they expect, the steamer has gone.
“’Tain’t my fault, mum,” the “cabbie” explains apologetically. “Him’s
the chap what done it,” indicating Riley, who has driven up to the
pier with the triumphant flourish of a winner in a great race.
Mr. Felton casts a withering look upon the jolly Irishman. “We may
as well return to the hotel,” he tells Louise.
At this moment Van Zandt steps from his cab, and, raising his hat,
remarks:
“I trust that the carelessness of my driver has not caused you
serious annoyance.”
“He has prevented our catching the last steamer that will sail for
Cuba in probably some months,” replies Mr. Felton, tartly.
“You blockhead!” cries Van Zandt sternly, turning to Riley, who
averts his face.
“My dear sir, it is needless for me to assure you of my profound
regret. It will not help matters. The mischief is done—and yet I think
I can repair it.”
“Repair it?” repeats Mr. Felton. “In what possible way, sir?”
“Very easily, if you desire. You were going to Havana, I presume?”
“Yes, sir.”
“My yacht sails for Santiago this afternoon at 1 o’clock. I shall be
happy to land you at that port, and you may thence proceed by rail
to Havana.”
Mr. Felton and Louise look at each other in surprise. “Really, sir,”
says the former, “you are very good, but I do not see how we can
put you to such trouble.”
“I assure you that you will not inconvenience me in the slightest.
The yacht is large and you will be the only passengers, with one
exception.”
Mr. Felton hesitates. “How badly does he want to go to Cuba?”
wonders Van Zandt and he remarks: “This will probably be your only
chance to reach Havana in some little time, if, as you say, there are
no more steamers. Really, I almost feel like insisting on your
accepting my offer, as some sort of reparation for the annoyance to
which you have been put and for which I feel partly responsible.”
“But a blockade has been declared about the island. Your yacht—”
“My yacht will land you at Santiago,” supplies Van Zandt, with a
peculiar smile. “We sail in about an hour, and we may as well
proceed to the yacht at once. For I assume that you have decided to
permit me to atone for the blackguardly behavior of my driver.”
Mr. Felton consults Miss Hathaway and the matter is decided in the
affirmative, and as Van Zandt hands them into their coupe, he tells
the driver: “North River, foot of Twenty-third Street.”
An hour later Miss Hathaway is expressing her admiration for the
beautiful yacht that is soon to bear her to the tropics, and Capt.
Beals is giving the last orders preparatory to getting under way.
As Van Zandt watches Mr. Felton cross from the pier to the deck of
the Semiramis into his dark eyes comes a glitter of almost savage
satisfaction, and he murmurs:
“I have you safe now, and by George! You will not soon escape
me!”
CHAPTER XXVI.
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebooknice.com