Menu

spaCy Tutorial – Complete Writeup

spaCy is an advanced modern library for Natural Language Processing developed by Matthew Honnibal and Ines Montani. This tutorial is a complete guide to learn how to use spaCy for various tasks.

1. Introduction

spaCy is an advanced modern library for Natural Language Processing developed by Matthew Honnibal and Ines Montani. It is designed to be industrial grade but open source.

# !pip install -U spacy
import spacy

spaCy comes with pretrained NLP models that can perform most common NLP tasks, such as tokenization, parts of speech (POS) tagging, named entity recognition (NER), lemmatization, transforming to word vectors etc.

If you are dealing with a particular language, you can load the spacy model specific to the language using spacy.load() function.

# Load small english model: https://spacy.io/models
nlp=spacy.load("en_core_web_sm")
nlp
#> spacy.lang.en.English at 0x7fd40c2eec50

This returns a Language object that comes ready with multiple built-in capabilities.

It’s a pretty long list. Time to grab a cup of coffee!

The Doc object

Now, let us say you have your text data in a string. What can be done to understand the structure of the text?

First, call the loaded nlp object on the text. It should return a processed Doc object.

# Parse text through the `nlp` model
my_text = """The economic situation of the country is on edge , as the stock 
market crashed causing loss of millions. Citizens who had their main investment 
in the share-market are facing a great loss. Many companies might lay off 
thousands of people to reduce labor cost"""

my_doc = nlp(my_text)
type(my_doc)
#> spacy.tokens.doc.Doc

The output is a Doc object.

But, what exactly is a Doc object ?

It is a sequence of tokens that contains not just the original text but all the results produced by the spaCy model after processing the text. Useful information such as the lemma of the text, whether it is a stop word or not, named entities, the word vector of the text and so on are pre-computed and readily stored in the Doc object.

The good thing is that you have complete control on what information needs to be pre-computed and customized. We will see all of that shortly.

Also, though the text gets split into tokens, no information of the original text is actually lost.

What is a Token?

Tokens are individual text entities that make up the text. Typically a token can be the words, punctuation, spaces, etc.

2. Tokenization with spaCy

What is Tokenization?

Tokenization is the process of converting a text into smaller sub-texts, based on certain predefined rules. For example, sentences are tokenized to words (and punctuation optionally). And paragraphs into sentences, depending on the context.

This is typically the first step for NLP tasks like text classification, sentiment analysis, etc.

Each token in spacy has different attributes that tell us a great deal of information.

Such as, if the token is a punctuation, what part-of-speech (POS) is it, what is the lemma of the word etc. This article will cover everything from A-Z.

Let’s see the token texts on my_doc. The string which the token represents can be accessed through the token.text attribute.

# Printing the tokens of a doc
for token in my_doc:
  print(token.text)
The
economic
situation
of
the
country
is
on
edge
...(truncated)...

The above tokens contain punctuation and common words like “a”, ” the”, “was”, etc. These do not add any value to the meaning of your text. They are called stop words.

Let’s clean it up.

3. Text-Preprocessing with spaCy

As mentioned in the last section, there is ‘noise’ in the tokens. The words such as ‘the’, ‘was’, ‘it’ etc are very common and are referred as ‘stop words’.

Besides, you have punctuation like commas, brackets, full stop and some extra white spaces too. The process of removing noise from the doc is called Text Cleaning or Preprocessing.

What is the need for Text Preprocessing ?

The outcome of the NLP task you perform, be it classification, finding sentiments, topic modeling etc, the quality of the output depends heavily on the quality of the input text used.

Stop words and punctuation usually (not always) don’t add value to the meaning of the text and can potentially impact the outcome. To avoid this, its might make sense to remove them and clean the text of unwanted characters can reduce the size of the corpus.

How to identify and remove the stopwords and punctuation?

The tokens in spacy have attributes which will help you identify if it is a stop word or not.

The token.is_stop attribute tells you that. Likewise, token.is_punct and token.is_space tell you if a token is a punctuation and white space respectively.

# Printing tokens and boolean values stored in different attributes
for token in my_doc:
  print(token.text,'--',token.is_stop,'---',token.is_punct)
The -- True --- False
economic -- False --- False
situation -- False --- False
of -- True --- False
the -- True --- False
country -- False --- False
is -- True --- False
on -- True --- False
edge -- False --- False
, -- False --- True
as -- True --- False
the -- True --- False
...(truncated)...

Using this information, let’s remove the stopwords and punctuations.

# Removing StopWords and punctuations
my_doc_cleaned = [token for token in my_doc if not token.is_stop and not token.is_punct]

for token in my_doc_cleaned:
  print(token.text)
economic
situation
country
edge
stock
market
crashed
causing
loss
millions
...(truncated)...

You can now see that the cleaned doc has only tokens that contribute to meaning in some way.

Also , the computational costs decreases by a great amount due to reduce in the number of tokens. In order to grasp the effect of Preprocessing on large text data , you can excecute the below code

# Reading a huge text data on robotics into a spacy doc
robotics_data= """Robotics is an interdisciplinary research area at the interface of computer science and engineering. Robotics involvesdesign, construction, operation, and use of robots. The goal of robotics is to design intelligent machines that can help and assist humans in their day-to-day lives and keep everyone safe. Robotics draws on the achievement of information engineering, computer engineering, mechanical engineering, electronic engineering and others.Robotics develops machines that can substitute for humans and replicate human actions. Robots can be used in many situations and for lots of purposes, but today many are used in dangerous environments(including inspection of radioactive materials, bomb detection and deactivation), manufacturing processes, or where humans cannot survive (e.g. in space, underwater, in high heat, and clean up and containment of hazardousmaterials and radiation). Robots can take on any form but some are made to resemble humans in appearance. This is said to help in the acceptance of a robot in 
certain replicative behaviors usually performed by people. Such robots attempt to replicate walking, lifting, speech, cognition, or any other human activity. Many of todays robots are inspired by nature, contributing to the field of bio-inspired 
robotics.The concept of creating machines that can operate autonomously dates back to classical times, but research into the functionality and potential uses of robots did not grow substantially until the 20th century. Throughout history, it has been frequently assumed by various scholars, inventors, engineers, and technicians that robots will one day be able to mimic human behavior and manage tasks in a human-like fashion. Today, robotics is a rapidly growing field, as technological advances continue; researching, designing, and building new robots serve various practical purposes, whether domestically, commercially, or militarily. Many robots are built to do jobs that are hazardous to people, such as defusing bombs, finding survivors in unstable ruins, and exploring mines and shipwrecks. Robotics is also used in STEM (science, technology, engineering, and mathematics) as a teaching aid. The advent of nanorobots, microscopic robots that can be injected into the human body, could revolutionize medicine and human health.Robotics is a branch of engineering that involves the conception, design, manufacture, and operation of robots. This field overlaps with computer engineering, computer science (especially artificial intelligence), electronics, mechatronics, nanotechnology and bioengineering.The word robotics was derived from the word robot, which was introduced to the public by Czech writer Karel Capek in his play R.U.R. (Rossums Universal Robots), whichwas published in 1920. The word robot comes from the Slavic word robota, which means slave/servant. The play begins in a factory that makes artificial people called robots, creatures who can be mistaken for humans – very similar to the modern ideas of androids. Karel Capek himself did not coin the word. He wrote a short letter in reference to an etymology in the 
Oxford English Dictionary in which he named his brother Josef Capek as its actual 
originator.According to the Oxford English Dictionary, the word robotics was first 
used in print by Isaac Asimov, in his science fiction short story "Liar!", 
published in May 1941 in Astounding Science Fiction. Asimov was unaware that he 
was coining the term  since the science and technology of electrical devices is 
electronics, he assumed robotics already referred to the science and technology 
of robots. In some of Asimovs other works, he states that the first use of the 
word robotics was in his short story Runaround (Astounding Science Fiction, March 
1942) where he introduced his concept of The Three Laws of Robotics. However, 
the original publication of "Liar!" predates that of "Runaround" by ten months, 
so the former is generally cited as the words origin.There are many types of robots; 
they are used in many different environments and for many different uses. Although 
being very diverse in application and form, they all share three basic similarities 
when it comes to their construction:Robots all have some kind of mechanical construction, a frame, form or shape designed to achieve a particular task. For example, a robot designed to travel across heavy dirt or mud, might use caterpillar tracks. The mechanical aspect is mostly the creators solution to completing the assigned task and dealing with the physics of the environment around it. Form follows function.Robots have electrical components which power and control the machinery. For example, the robot with caterpillar tracks would need some kind of power to move the tracker treads. That power comes in the form of electricity, which will have to travel through a wire and originate from a battery, a basic electrical circuit. Even petrol powered machines that get their power mainly from petrol still require an electric current to start the combustion process which is why most petrol powered machines like cars, have batteries. The electrical aspect of robots is used for movement (through motors), sensing (where electrical signals are used to measure things like heat, sound, position, and energy status) and operation (robots need some level of electrical energy supplied to their motors and sensors in order to activate and perform basic operations) All robots contain some level of computer programming code. A program is how a robot decides when or how to do something. In the caterpillar track example, a robot that needs to move across a muddy road may have the correct mechanical construction and receive the correct amount of power from its battery, but would not go anywhere without a program telling it to move. Programs are the core essence of a robot, it could have excellent mechanical and electrical construction, but if its program is poorly constructed its performance will be very poor (or it may not perform at all). There are three different types of robotic programs: remote control, artificial intelligence and hybrid. A robot with remote control programing has a preexisting set of commands that it will only perform if and when it receives a signal from a control source, typically a human being with a remote control. It is perhaps more appropriate to view devices controlled primarily by human commands as falling in the discipline of automation rather than robotics. Robots that use artificial intelligence interact with their environment on their own without a control source, and can determine reactions to objects and problems they encounter using their preexisting programming. Hybrid is a form of programming that incorporates both AI and RC functions.As more and more robots are designed for specific tasks this method of classification becomes more relevant. For example, many robots are designed for assembly work, which may not be readily adaptable for other applications. They are termed as "assembly robots". For seam welding, some suppliers provide complete welding systems with the robot i.e. the welding equipment along with other material handling facilities like turntables, etc. as an integrated unit. Such an integrated robotic system is called a "welding robot" even though its discrete manipulator unit could be adapted to a variety of tasks. Some robots are specifically designed for heavy load manipulation, and are labeled as "heavy-duty robots".one or two wheels. These can have certain advantages such as greater efficiency and reduced parts, as well as allowing a robot to navigate in confined places that a four-wheeled robot would not be able to.Two-wheeled balancing robots Balancing robots generally use a gyroscope to detect how much a robot is falling and then drive the wheels proportionally in the same direction, to counterbalance the fall at hundreds of times per second, based on the dynamics of an inverted pendulum.[71] Many different balancing robots have been designed.[72] While the Segway is not commonly thought of as a robot, it can be thought of as a component of a robot, when used as such Segway refer to them as RMP (Robotic Mobility Platform). An example of this use has been as NASA Robonaut that has been mounted on a Segway.One-wheeled balancing robots Main article: Self-balancing unicycle A one-wheeled balancing robot is an extension of a two-wheeled balancing robot so that it can move in any 2D direction using a round ball as its only wheel. Several one-wheeled balancing robots have been designed recently, such as Carnegie Mellon Universitys "Ballbot" that is the approximate height and width of a person, and Tohoku Gakuin University BallIP Because of the long, thin shape and ability to maneuver in tight spaces, they have the potential to function better than other robots in environments with people
"""

# Pass the Text to Model
robotics_doc = nlp(robotics_data)

print('Before PreProcessing n_Tokens: ', len(robotics_doc))

# Removing stopwords and punctuation from the doc.
robotics_doc=[token for token in robotics_doc if not token.is_stop and not token.is_punct]

print('After PreProcessing n_Tokens: ', len(robotics_doc))
#> Before PreProcessing n_Tokens:  1667
#> After PreProcessing n_Tokens:  782

More than half of the tokens are removed. Makes the processing faster and meaningful.

4. Lemmatization

Have a look at these words: “played”, “playing”, “plays”, “play”.

These words are not entirely unique, as they all basically refer to the root word: “play”. Very often, while trying to interpret the meaning of the text using NLP, you will be concerned about the root meaning and not the tense.

For algorithms that work based on the number of occurrences of the words, having multiple forms of the same word will reduce the number of counts for the root word, which is ‘play’ in this case.

Hence, counting “played” and “playing” as different tokens will not help.

Lemmatization is the method of converting a token to it’s root/base form.

Fortunately, spaCy provides a very easy and robust solution for this and is considered as one of the optimal implementations.

After you’ve formed the Document object (by using nlp()), you can access the root form of every token through Token.lemma_ attribute.

# Lemmatizing the tokens of a doc
text='she played chess against rita she likes playing chess.'
doc=nlp(text)
for token in doc:
  print(token.lemma_)
#> -PRON-
#> play
#> chess
#> against
#> rita
#> -PRON-
#> like
#> play
#> chess
#> .

This method also prints ‘PRON’ when it encounters a pronoun as shown above. You might have to explicitly handle them.

5. Strings to Hashes

You are aware that whenever you create a doc , the words of the doc are stored in the Vocab.

Also, consider you have about 1000 text documents each having information about various clothing items of different brands. The chances are, the words “shirt” and “pants” are going to be very common. Each time the word “shirt” occurs , if spaCy were to store the exact string , you’ll end up losing huge memory space.

But this doesn’t happen. Why ?

spaCy hashes or converts each string to a unique ID that is stored in the StringStore.

But, what is StringStore?

It’s a dictionary mapping of hash values to strings, for example 10543432924755684266 –> box

You can print the hash value if you know the string and vice-versa. This is contained in nlp.vocab.strings as shown below.

# Strings to Hashes and Back
doc = nlp("I love traveling")

# Look up the hash for the word "traveling"
word_hash = nlp.vocab.strings["traveling"]
print(word_hash)

# Look up the word_hash to get the string
word_string = nlp.vocab.strings[word_hash]
print(word_string)
#> 5902765392174988614
#> traveling

Interestingly, a word will have the same hash value irrespective of which document it occurs in or which spaCy model is being used.

So your results are reproducible even if you run your code in some one else’s machine.

# Create two different doc with a common word
doc1 = nlp('Raymond shirts are famous')
doc2 = nlp('I washed my shirts ')

# Printing the hash value for each token in the doc

print('-------DOC 1-------')
for token in doc1:
  hash_value=nlp.vocab.strings[token.text]
  print(token.text ,' ',hash_value)

print('-------DOC 2-------')
for token in doc2:
  hash_value=nlp.vocab.strings[token.text]
  print(token.text ,' ',hash_value)
#> -------DOC 1-------
#> Raymond   5945540083247941101
#> shirts   9181315343169869855
#> are   5012629990875267006
#> famous   17809293829314912000
#> -------DOC 2-------
#> I   4690420944186131903
#> washed   5520327350569975027
#> my   227504873216781231
#> shirts   9181315343169869855

You can verify that ‘ shirts ‘ has the same hash value irrespective of which document it occurs in. This saves memory space.

6. Lexical attributes of spaCy

Recall that we used is_punct and is_space attributes in Text Preprocessing. They are called as ‘lexical attributes’.

In this section, you will learn about a few more significant lexical attributes.

The spaCy model provides many useful lexical attributes. These are the attributes of Token object, that give you information on the type of token.

For example, you can use like_num attribute of a token to check if it is a number. Let’s print all the numbers in a text.

# Printing the tokens which are like numbers
text=' 2020 is far worse than 2009'
doc=nlp(text)
for token in doc:
  if token.like_num:
    print(token)
#> 2020
#> 2009

Let us discuss some real-life applications of these features.

Say you have a text file about percentage production of medicine in various cities.

production_text=' Production in chennai is 87 %. In Kolkata, produce it as low as 43 %. In Bangalore, production ia as good as 98 %.In mysore, production is average around 78 %'

What if you just want to a list of various percentages in the text ?

You can convert the text into a Doc object of spaCy and check what tokens are numbers through like_num attribute . If it is a number, you can check if the next token is ” % “. You can access the index of next token through token.i + 1

# Finding the tokens which are numbers followed by % 

production_doc=nlp(production_text)

for token in production_doc:
  if token.like_num:
    index_of_next_token=token.i+ 1
    next_token=production_doc[index_of_next_token]
    if next_token.text == '%':
      print(token.text)
#> 87
#> 43
#> 98
#> 78

There are other useful attributes too. Let’s discuss more.

7. Detecting Email Addresses

Consider you have a text document about details of various employees.

What if you want all the emails of employees to send a common email ?

You can tokenize the document and check which tokens are emails through like_email attribute. like_email returns True if the token is a email

# text containing employee details
employee_text=""" name : Koushiki age: 45 email : koushiki@gmail.com
                 name : Gayathri age: 34 email: gayathri1999@gmail.com
                 name : Ardra age: 60 email : ardra@gmail.com
                 name : pratham parmar age: 15 email : parmar15@yahoo.com
                 name : Shashank age: 54 email: shank@rediffmail.com
                 name : Utkarsh age: 46 email :utkarsh@gmail.com"""

# creating a spacy doc          
employee_doc=nlp(employee_text)

# Printing the tokens which are email through `like_email` attribute
for token in employee_doc:
  if token.like_email:
    print(token.text)
#> koushiki@gmail.com
#> gayathri1999@gmail.com
#> ardra@gmail.com
#> parmar15@yahoo.com
#> shank@rediffmail.com
#> utkarsh@gmail.com

Likewise, spaCy provides a variety of token attributes. Below is a list of those attributes and the function they perform

  • token.is_alpha : Returns True if the token is an alphabet
  • token.is_ascii : Returns True if the token belongs to ascii characters
  • token.is_digit : Returns True if the token is a number(0-9)
  • token.is_upper : Returns True if the token is upper case alphabet
  • token.is_lower : Returns True if the token is lower case alphabet
  • token.is_space : Returns True if the token is a space ‘ ‘
  • token.is_bracket : Returns True if the token is a bracket
  • token.is_quote : Returns True if the token is a quotation mark
  • token.like_url : Returns True if the token is similar to a URl (link to website)

Apart from Lexical attributes, there are other attributes which throw light upon the tokens. You’ll see about them in next sections.

8. Part of Speech analysis with spaCy

Consider a sentence , “Emily likes playing football”.

Here , Emily is a NOUN , and playing is a VERB. Likewise , each word of a text is either a noun, pronoun, verb, conjection, etc. These tags are called as Part of Speech tags (POS).

How to identify the part of speech of the words in a text document ?

It is present in the pos_ attribute.

# POS tagging using spaCy
my_text='John plays basketball,if time permits. He played in high school too.'
my_doc=nlp(my_text)
for token in my_doc:
  print(token.text,'---- ',token.pos_)
#> John ----  PROPN
#> plays ----  VERB
#> basketball ----  NOUN
#> , ----  PUNCT
#> if ----  SCONJ
#> time ----  NOUN
#> permits ----  VERB
#> . ----  PUNCT
#> He ----  PRON
#> played ----  VERB
#> in ----  ADP
#> high ----  ADJ
#> school ----  NOUN
#> too ----  ADV
#> . ----  PUNCT

From above output , you can see the POS tag against each word like VERB , ADJ, etc..

What if you don’t know what the tag SCONJ means ?

Using spacy.explain() function , you can know the explanation or full-form in this case.

spacy.explain('SCONJ')
'subordinating conjunction'

9. How POS tagging helps you in dealing with text based problems.

Consider you have a text document of reviews or comments on a post. Apart from genuine words, there will be certain junk like “etc” which do not mean anything. How can you remove them ?

Using spacy’s pos_ attribute, you can check if a particular token is junk through token.pos_ == 'X' and remove them. Below code demonstrates the same.

# Raw text document
raw_text="""I liked the movies etc The movie had good direction  The movie was amazing i.e.
            The movie was average direction was not bad The cinematography was nice. i.e.
            The movie was a bit lengthy  otherwise fantastic  etc etc"""

# Creating a spacy object
raw_doc=nlp(raw_text)

# Checking if POS tag is X and printing them
print('The junk values are..')
for token in raw_doc:
  if token.pos_=='X':
    print(token.text)

print('After removing junk')
# Removing the tokens whose POS tag is junk.
clean_doc=[token for token in raw_doc if not token.pos_=='X']
print(clean_doc)
#> The junk values are..
#> etc
#> i.e.
#> i.e.
#> etc
#> etc
#> After removing junk
#> [I, liked, the, movies, The, movie, had, good, direction,  , The, movie, was, amaing, 
#>            , The, movie, was, average, direction, was, not, bad, The, ciematography, was, nice, ., 
#>            , The, movie, was, a, bit, lengthy,  , otherwise, fantastic,  ]

You can also know what types of tokens are present in your text by creating a dictionary shown below.

# creating a dictionary with parts of speeach & corresponding token numbers.

all_tags = {token.pos: token.pos_ for token in raw_doc}
print(all_tags)
#> {95: 'PRON', 100: 'VERB', 90: 'DET', 92: 'NOUN', 101: 'X', 87: 'AUX', 84: 'ADJ', 103: 'SPACE', 94: 'PART', 97: 'PUNCT', 86: 'ADV'}

For better understanding of various POS of a sentence, you can use the visualization function displacy of spacy.

# Importing displacy
from spacy import displacy
my_text='She never like playing , reading was her hobby'
my_doc=nlp(my_text)

# displaying tokens with their POS tags
displacy.render(my_doc,style='dep',jupyter=True)

spacy - Displaying entities

10. Named Entity Recognition

Have a look at this text “John works at Google1″. In this, ” John ” and ” Google ” are names of a person and a company. These words are referred as named-entities. They are real-world objects like name of a company , place,etc..

How can find all the named-entities in a text ?

Using spaCy’s ents attribute on a document, you can access all the named-entities present in the text.

# Preparing the spaCy document
text='Tony Stark owns the company StarkEnterprises . Emily Clark works at Microsoft and lives in Manchester. She loves to read the Bible and learn French'
doc=nlp(text)

# Printing the named entities
print(doc.ents)
#> (Tony Stark, StarkEnterprises, Emily Clark, Microsoft, Manchester, Bible, French)

You can see all the named entities printed.

But , is this complete information ? NO.

Each named entity belongs to a category, like name of a person, or an organization, or a city, etc. The common Named Entity categories supported by spacy are :

  • PERSON : Denotes names of people
  • GPE : Denotes places like counties, cities, states.
  • ORG : Denotes organizations or companies
  • WORK_OF_ART : Denotes titles of books, fimls,songs and other arts
  • PRODUCT : Denotes products such as vehicles, food items ,furniture and so on.
  • EVENT : Denotes historical events like wars, disasters ,etc…
  • LANGUAGE : All the recognized languages across the globe.

How can you find out which named entity category does a given text belong to?

You can access the same through .label_ attribute of spacy. It prints the label of named entities as shown below.

# Printing labels of entities.
for entity in doc.ents:
  print(entity.text,'--- ',entity.label_)
#> Tony Stark ---  PERSON
#> StarkEnterprises ---  ORG
#> Emily Clark ---  PERSON
#> Microsoft ---  ORG
#> Manchester ---  GPE
#> Bible ---  WORK_OF_ART
#> French ---  LANGUAGE

spaCy also provides special visualization for NER through displacy. Using displacy.render() function, you can set the style=ent to visualize.

# Using displacy for visualizing NER
from spacy import displacy
displacy.render(doc,style='ent',jupyter=True)

NER output using displacy from spaCy package

11. NER Application 1: Extracting brand names with Named Entity Recognition

Now that you have got a grasp on basic terms and process, let’s move on to see how named entity recognition is useful for us.

Consider this article about competition in the mobile industry.

mobile_industry_article=""" 30 Major mobile phone brands Compete in India – A Case Study of Success and Failures
Is the Indian mobile market a terrible War Zone? We have more than 30 brands competing with each other. Let’s find out some insights about the world second-largest mobile bazaar.There is a massive invasion by Chinese mobile brands in India in the last four years. Some of the brands have been able to make a mark while others like Meizu, Coolpad, ZTE, and LeEco are a failure.On one side, there are brands like Sony or HTC that have quit from the Indian market on the other side we have new brands like Realme or iQOO entering the marketing in recent months.The mobile market is so competitive that some of the brands like Micromax, which had over 18% share back in 2014, now have less than 5%. Even the market leader Samsung with a 34% market share in 2014, now has a 21% share whereas Xiaomi has become a market leader. The battle is fierce and to sustain and scale-up is going to be very difficult for any new entrant.new comers in Indian Mobile MarketiQOO –They have recently (March 2020) launched the iQOO 3 in India with its first 5G phone – iQOO 3. The new brand is part of the Vivo or the BBK electronics group that also owns several other brands like Oppo, Oneplus and Realme.Realme – Realme launched the first-ever phone – Realme 1 in November 2018 and has quickly became a popular brand in India. The brand is one of the highest sellers in online space and even reached a 16% market share threatening Xiaomi’s dominance.iVoomi – In 2017, we have seen the entry of some new Chinese mobile brands likeiVoomi which focuses on the sub 10k price range, and is a popular online player. They have an association with Flipkart.Techno & Infinix – Transsion Group’s Tecno and Infinix brands debuted in India in mid-2017 and are focusing on the low end and mid-range phones in the price range of Rs. 5000 to Rs. 12000.10.OR & Lephone – 10.OR has a partnership with Amazon India and is an exclusive online brand with phones like 10.OR D, G and E. However, the brand is not very aggressive currently.Kult – Kult is another player who launched a very aggressively priced Kult Beyond mobile in 2017 and followed up by launching 2-3 more models.However, most of these new brands are finding it difficult to strengthen their footing in India. As big brands like Xiaomi leave no stone unturned to make things difficult.Also, it is worth noting that there is less Chinese players coming to India now. As either all the big brands have already set shop or burnt their hands and retreated to the homeland China.Chinese/ Global  Brands Which failed or are at the Verge of Failing in India?
There are a lot more failures in the market than the success stories. Let’s first look at the failures and then we will also discuss why some brands were able to succeed in India.HTC – The biggest surprise this year for me was the failure of HTC in India. The brand has been in the country for many years, in fact, they were the first brand to launch Android mobiles. Finally HTC decided to call it a day in July 2018.LeEco – LeEco looked promising and even threatening to Xiaomi when it came to India. The company launched a series of new phones and smart TVs at affordable rates. Unfortunately, poor financial planning back home caused the brand to fail in India too.LG – The company seems to have lost focus and are doing poorly in all segments. While the budget and mid-range offering are uncompetitive, the high-end models are not preferred by buyers.Sony – Absurd pricing and lack of ability to understand the Indian buyers have caused Sony to shrink mobile operations in India. In the last 2 years, there are far fewer launches and hardly any promotions or hype around the new products.Meizu – Meizu is also a struggling brand in India and is going nowhere with the current strategy. There are hardly any popular mobiles nor a retail presence.ZTE – The company was aggressive till last year with several new phones launching under the Nubia banner, but with recent issues in the US, they have even lost the plot in India.Coolpad – I still remember the first meeting with Coolpad CEO in Mumbai when the brand started operations. There were big dreams and ambitions, but the company has not been able to deliver and keep up with the rivals in the last 1 year.Gionee – Gionee was doing well in the retail, but the infighting in the company and loss of focus from the Chinese parent company has made it a failure. The company is planning a comeback. However, we will have to wait and see when that happens."""

What if you want to know all the companies that are mentioned in this article?

This is where Named Entity Recognition helps. You can check which tokens are organizations using label_ attribute as shown in below code.

# creating spacy doc
mobile_doc=nlp(mobile_industry_article)

# List to store name of mobile companies
list_of_org=[]

# Appending entities which havel the label 'ORG' to the list
for entity in mobile_doc.ents:
  if entity.label_=='ORG':
    list_of_org.append(entity.text)

print(list_of_org)
#> ['Meizu', 'ZTE', 'LeEco', 'Sony', 'HTC', 'Xiaomi', 'Xiaomi', 'iVoomi', 'Techno & Infinix – Transsion Group',
  #> Lephone', 'Amazon India', 'Kult', 'Kult', 'Kult Beyond', 'HTC', 'Android', 'Sony', 'Sony', 'Meizu', 'Meizu', 'ZTE', 'Nubia']

You have successfully extracted list of companies that were mentioned in the article.

12. NER Application 2: Automatically Masking Entities

Let us also discuss another application. You come across many articles about theft and other crimes.

# Creating a doc on news articles
news_text="""Indian man has allegedly duped nearly 50 businessmen in the UAE of USD 1.6 million and fled the country in the most unlikely way -- on a repatriation flight to Hyderabad, according to a media report on Saturday.Yogesh Ashok Yariava, the prime accused in the fraud, flew from Abu Dhabi to Hyderabad on a Vande Bharat repatriation flight on May 11 with around 170 evacuees, the Gulf News reported.Yariava, the 36-year-old owner of the fraudulent Royal Luck Foodstuff Trading, made bulk purchases worth 6 million dirhams (USD 1.6 million) against post-dated cheques from unsuspecting traders before fleeing to India, the daily said.
The bought goods included facemasks, hand sanitisers, medical gloves (worth nearly 5,00,000 dirhams), rice and nuts (3,93,000 dirhams), tuna, pistachios and saffron (3,00,725 dirhams), French fries and mozzarella cheese (2,29,000 dirhams), frozen Indian beef (2,07,000 dirhams) and halwa and tahina (52,812 dirhams).
The list of items and defrauded persons keeps getting longer as more and more victims come forward, the report said.
The aggrieved traders have filed a case with the Bur Dubai police station.
The traders said when the dud cheques started bouncing they rushed to the Royal Luck's office in Dubai but the shutters were down, even the fraudulent company's warehouses were empty."""

news_doc=nlp(news_text)

While using this for a case study, you might need to to avoid use of original names, companies and places. How can you do it ?

Write a function which will scan the text for named entities which have the labels PERSON , ORG and GPE. These tokens can be replaced by “UNKNOWN”.

I suggest to try it out in your Jupyter notebook if you have access. The answer is below.

# Function to identify  if tokens are named entities and replace them with UNKNOWN
def remove_details(word):
  if word.ent_type_ =='PERSON' or word.ent_type_=='ORG' or word.ent_type_=='GPE':
    return ' UNKNOWN '
  return word.string


# Function where each token of spacy doc is passed through remove_deatils()
def update_article(doc):
  # iterrating through all entities
  for ent in doc.ents:
    ent.merge()
  # Passing each token through remove_details() function.
  tokens = map(remove_details,doc)
  return ''.join(tokens)

# Passing our news_doc to the function update_article()
update_article(news_doc)
#> "Indian man has allegedly duped nearly 50 businessmen in the  UNKNOWN of USD 1.6 million and fled the country in the most unlikely way -- on a repatriation flight to  UNKNOWN , according to a media report on Saturday.
#> UNKNOWN , the prime accused in the fraud, flew from  UNKNOWN to  UNKNOWN on a Vande Bharat repatriation flight on May 11 with around 170 evacuees,  UNKNOWN reported.
#>  UNKNOWN , the 36-year-old owner of the fraudulent  UNKNOWN , made bulk purchases worth 6 million dirhams (USD 1.6 million) against post-dated cheques from unsuspecting traders before fleeing to  UNKNOWN , the daily said.\n\nThe bought goods included facemasks, hand sanitisers, medical gloves (worth nearly 5,00,000 dirhams), rice and nuts (3,93,000 dirhams), tuna, pistachios and saffron (3,00,725 dirhams), French fries and mozzarella cheese (2,29,000 dirhams), frozen Indian beef (2,07,000 dirhams) and halwa and  UNKNOWN (52,812 dirhams).\n\nThe list of items and defrauded persons keeps getting longer as more and more victims come forward, the report said.\n\nThe aggrieved traders have filed a case with the Bur Dubai police station.\n\nThe traders said when the  UNKNOWN cheques started bouncing they rushed to  UNKNOWN office in  UNKNOWN but the shutters were down, even the fraudulent company's warehouses were empty."

You can observe that the article has been updated and many names have been hidden now. These are few applications of NER in reality.

13. Rule based Matching

Consider the sentence “Windows 8.0 has become outdated and slow. It’s better to update to Windows 10”. What if you want to extracts all versions of Windows mentioned in the text ?

There will be situations like these, where you’ll need extract specific pattern type phrases from the text. This is called Rule-based matching.

Rule-based matching in spacy allows you write your own rules to find or extract words and phrases in a text. spacy supports three kinds of matching methods :

  1. Token Matcher
  2. Phrase Matcher
  3. Entity Ruler

Token Matcher

spaCy supports a rule based matching engine Matcher, which operates over individual tokens to find desired phrases.

You can import spaCy’s Rule based Matcher as shown below.

from spacy.matcher import Matcher 

The procedure to implement a token matcher is:

  1. Initialize a Matcher object
  2. Define the pattern you want to match
  3. Add the pattern to the matcher
  4. Pass the text to the matcher to extract the matching positions.

Let’s see how to implement the above steps.

Token Matcher Example 1

First step: Initialize the Matcher with the vocabulary of your spacy model nlp

# Initializing the matcher with vocab
matcher = Matcher(nlp.vocab)
matcher
<spacy.matcher.matcher.Matcher at 0x7ff4e3a943c8>

You have store what type of pattern you desire in a list of dictionaries. Each dictionary represents a token. The rules for the token can refer to annotations Ex: ISDIGIT , ISALPHA , token.text , token.pos_,etc..

Let’s see how to create the pattern for identifying phrases like ” version : 11″ , ” version : 5 ” and so on.

First, create a list of dictionaries that represents the pattern you want to capture.

# Define the matching pattern
my_pattern=[{"LOWER": "version"}, {"IS_PUNCT": True}, {"LIKE_NUM": True}]

Now , you can add the pattern to your Matcher through matcher.add() function.

The input parameters are:

  • match_id – a custom id for your matcher . In this case I use ” Versionfinder”
  • match_on– It is an optional parameter, where you can call functions when a match is found. Otherwise, use None
  • *patterns – You need to pass your pattern (list of dicts describing tokens)
# Define the token matcher
matcher.add('VersionFinder', None, my_pattern)

You can now use matcher on your text document.

# Run the Token Matcher
my_text = 'The version : 6 of the app was released about a year back and was not very sucessful. As a comeback, six months ago, version : 7 was released and it took the stage. After that , the app has has the limelight till now. On interviewing some sources, we get to know that they have outlined visiond till version : 12 ,the Ultimate.'
my_doc = nlp(my_text)

desired_matches = matcher(my_doc)
desired_matches
#> [(6950581368505071052, 2, 5),
 #> (6950581368505071052, 28, 31),
 #> (6950581368505071052, 66, 69)]

Passing the Doc to matcher() returns a list of tuples as shown above. Each tuple has the structure –(match_id, start, end).

match_id denotes the hash value of the matching string.You can find the string corresponding to the ID in nlp.vocab.strings. The start and end denote the starting and ending token numbers of the document, which is a match.

How to extract the phrases that matches from this list of tuples ?

A slice of a Doc object is referred as Span. If you have your spacy doc , and start and end indices, you extract a slice / span of the text through :Span=doc[start:end].

Below code makes use of this to extract matching phrases with the help of list of tuples desired_matches.

# Extract the matches
for match_id, start, end in desired_matches :
    string_id = nlp.vocab.strings[match_id] 
    span = my_doc[start:end] 
    print(span.text)
#> version : 6
#> version : 7
#> version : 12

Above code has successfully performed rule-based matching and printed all the versions mentioned in the text.

This is how rule based matching works. Let’s dive deeper and look at a few more implementations !

Token Matcher Example 2

Consider a text document containing queries on a travel website. You wish to extract phrases from the text that mention visiting various places.

# Parse text
text = """I visited Manali last time. Around same budget trips ? "
    I was visiting Ladakh this summer "
    I have planned visiting NewYork and other abroad places for next year"
    Have you ever visited Kodaikanal? """

doc = nlp(text)

Your desired pattern is a combination of 2 tokens. The first token is text “visiting ” or other related words.You can use the LEMMA attribute for the same.The second desired token is the place/location. You can set POS tag to be “PROPN” for this token.

The below code demonstrates how to write and add this pattern to the matcher

# Initialize the matcher
matcher = Matcher(nlp.vocab)

# Write a pattern that matches a form of "visit" + place
my_pattern = [{"LEMMA": "visit"}, {"POS": "PROPN"}]

# Add the pattern to the matcher and apply the matcher to the doc
matcher.add("Visting_places", None,my_pattern)
matches = matcher(doc)

# Counting the no of matches
print(" matches found:", len(matches))

# Iterate over the matches and print the span text
for match_id, start, end in matches:
    print("Match found:", doc[start:end].text)
 #>matches found: 4
#> Match found: visited Manali
#> Match found: visiting Ladakh
#> Match found: visiting NewYork
#> Match found: visited Kodaikanal

The above output is just as desired.

Token Matcher Example 3

Let’s see a slightly involved example.

Sometimes, you may have the need to choose tokens which fall under a few POS categories. Let us consider one more example of this case.

# Parse text
engineering_text = """If you study aeronautical engineering, you could specialize in aerodynamics, aeroelasticity, 
composites analysis, avionics, propulsion and structures and materials. If you choose to study chemical engineering, you may like to
specialize in chemical reaction engineering, plant design, process engineering, process design or transport phenomena. Civil engineering is the professional practice of designing and developing infrastructure projects. This can be on a huge scale, such as the development of
nationwide transport systems or water supply networks, or on a smaller scale, such as the development of single roads or buildings.
specializations of civil engineering include structural engineering, architectural engineering, transportation engineering, geotechnical engineering,
environmental engineering and hydraulic engineering. Computer engineering concerns the design and prototyping of computing hardware and software. 
This subject merges electrical engineering with computer science, oldest and broadest types of engineering, mechanical engineering is concerned with the design,
manufacturing and maintenance of mechanical systems. You’ll study statics and dynamics, thermodynamics, fluid dynamics, stress analysis, mechanical design and
technical drawing"""

doc = nlp(engineering_text)

Above, you have a text document about different career choices.

Let’s say you wish to extract a list of all the engineering courses mentioned in it. The desired pattern : _ Engineering. The first token is usually a NOUN (eg: computer, civil), but sometimes it is an ADJ (eg: transportation, etc.)

So, you need to write a pattern with the condition that first token has POS tag either a NOUN or an ADJ.

How to do that ?

The attribute IN helps you in this. You can use {"POS": {"IN": ["NOUN", "ADJ"]}} dictionary to represent the first token.

# Initializing the matcher
matcher = Matcher(nlp.vocab)

# Write a pattern that matches a form of "noun/adjective"+"engineering"
my_pattern = [{"POS": {"IN": ["NOUN", "ADJ"]}}, {"LOWER": "engineering"}]

# Add the pattern to the matcher and apply the matcher to the doc
matcher.add("identify_courses", None,my_pattern)
matches = matcher(doc)
print("Total matches found:", len(matches))

# Iterate over the matches and print the matching text
for match_id, start, end in matches:
    print("Match found:", doc[start:end].text)
Total matches found: 15
Match found: aeronautical engineering
Match found: chemical engineering
Match found: reaction engineering
Match found: process engineering
Match found: Civil engineering
Match found: civil engineering
Match found: structural engineering
Match found: architectural engineering
Match found: transportation engineering
Match found: geotechnical engineering
Match found: environmental engineering
Match found: hydraulic engineering
Match found: Computer engineering
Match found: electrical engineering
Match found: mechanical engineering

You have neatly extracted the desired phrases with the Token matcher.

Note that IN used in above code is an extended pattern attribute along with NOT_IN. It serves the exact opposite purpose of IN.

This is all about Token Matcher, let’s look at the Phrase Matcher next.

Phrase Matcher

Using Matcher of spacy you can identify token patterns as seen above. But when you have a phrase to be matched, using Matcher will take a lot of time and is not efficient.

spaCy provides PhraseMatcher which can be used when you have a large number of terms(single or multi-tokens) to be matched in a text document. Writing patterns for Matcher is very difficult in this case. PhraseMatcher solves this problem, as you can pass Doc patterns rather than Token patterns.

The procedure to use PhraseMatcher is very similar to Matcher.

  1. Initialize a PhraseMatcher object with a vocab.
  2. Define the terms you want to match
  3. Add the pattern to the matcher
  4. Run the text through the matcher to extract the matching positions.
from spacy.matcher import PhraseMatcher

After importing , first you need to initialize the PhraseMatcher with vocab through below command

# PhraseMatcher
matcher = PhraseMatcher(nlp.vocab)

As we use it generally in case of long list of terms, it’s better to first store the terms in a list as shown below

# Terms to match
terms_list = ['Bruce Wayne', 'Tony Stark', 'Batman', 'Harry Potter', 'Severus Snape']

You can convert the list of phrases into a doc object through make_doc() method. It is faster and saves time.

# Make a list of docs
patterns = [nlp.make_doc(text) for text in terms_list]

You can add the pattern to your matcher through matcher.add() method.

The inputs for the function are – A custom ID for your matcher, optional parameter for callable function, pattern list.

matcher.add("phrase_matcher", None, *patterns)

Now you can apply your matcher to your spacy text document. Below, you have a text article on prominent fictional characters and their creators.

# Matcher Object
fictional_char_doc = nlp("""Superman (first appearance: 1938)  Created by Jerry Siegal and Joe Shuster for Action Comics #1 (DC Comics).Mickey Mouse (1928)  Created by Walt Disney and Ub Iworks for Steamboat Willie.Bugs Bunny (1940)  Created by Warner Bros and originally voiced by Mel Blanc.Batman (1939) Created by Bill Finger and Bob Kane for Detective Comics #27 (DC Comics).
Dorothy Gale (1900)  Created by L. Frank Baum for novel The Wonderful Wizard of Oz. Later portrayed by Judy Garland in the 1939 film adaptation.Darth Vader (1977) Created by George Lucas for Star Wars IV: A New Hope.The Tramp (1914)  Created and portrayed by Charlie Chaplin for Kid Auto Races at Venice.Peter Pan (1902)  Created by J.M. Barrie for novel The Little White Bird.
Indiana Jones (1981)  Created by George Lucas for Raiders of the Lost Ark. Portrayed by Harrison Ford.Rocky Balboa (1976)  Created and portrayed by Sylvester Stallone for Rocky.Vito Corleone (1969) Created by Mario Puzo for novel The Godfather. Later portrayed by Marlon Brando and Robert DeNiro in Coppola’s film adaptation.Han Solo (1977) Created by George Lucas for Star Wars IV: A New Hope. 
Portrayed most famously by Harrison Ford.Homer Simpson (1987)  Created by Matt Groening for The Tracey Ullman Show, later The Simpsons as voiced by Dan Castellaneta.Archie Bunker (1971) Created by Norman Lear for All in the Family. Portrayed by Carroll O’Connor.Norman Bates (1959) Created by Robert Bloch for novel Psycho.  Later portrayed by Anthony Perkins in Hitchcock’s film adaptation.King Kong (1933) 
Created by Edgar Wallace and Merian C Cooper for the film King Kong.Lucy Ricardo (1951) Portrayed by Lucille Ball for I Love Lucy.Spiderman (1962)  Created by Stan Lee and Steve Ditko for Amazing Fantasy #15 (Marvel Comics).Barbie (1959)  Created by Ruth Handler for the toy company Mattel Spock (1964)  Created by Gene Roddenberry for Star Trek. Portrayed most famously by Leonard Nimoy.
Godzilla (1954) Created by Tomoyuki Tanaka, Ishiro Honda, and Eiji Tsubaraya for the film Godzilla.The Joker (1940)  Created by Jerry Robinson, Bill Finger, and Bob Kane for Batman #1 (DC Comics)Winnie-the-Pooh (1924)  Created by A.A. Milne for verse book When We Were Young.Popeye (1929)  Created by E.C. Segar for comic strip Thimble Theater (King Features).Tarzan (1912) Created by Edgar Rice Burroughs for the novel Tarzan of the Apes.Forrest Gump (1986)  Created by Winston Groom for novel Forrest Gump.  Later portrayed by Tom Hanks in Zemeckis’ film adaptation.Hannibal Lector (1981)  Created by Thomas Harris for the novel Red Dragon. Portrayed most famously by Anthony Hopkins in the 1991 Jonathan Demme film The Silence of the Lambs.
Big Bird (1969) Created by Jim Henson and portrayed by Carroll Spinney for Sesame Street.Holden Caulfield (1945) Created by J.D. Salinger for the Collier’s story “I’m Crazy.”  Reworked into the novel The Catcher in the Rye in 1951.Tony Montana (1983)  Created by Oliver Stone for film Scarface.  Portrayed by Al Pacino.Tony Soprano (1999)  Created by David Chase for The Sopranos. Portrayed by James Gandolfini.
The Terminator (1984)  Created by James Cameron and Gale Anne Hurd for The Terminator. Portrayed by Arnold Schwarzenegger.Jon Snow (1996)  Created by George RR Martin for the novel The Game of Thrones.  Portrayed by Kit Harrington.Charles Foster Kane (1941)  Created and portrayed by Orson Welles for Citizen Kane.Scarlett O’Hara (1936)  Created by Margaret Mitchell for the novel Gone With the Wind. Portrayed most famously by Vivien Leigh 
for the 1939 Victor Fleming film adaptation.Marty McFly (1985) Created by Robert Zemeckis and Bob Gale for Back to the Future. Portrayed by Michael J. Fox.Rick Blaine (1940)  Created by Murray Burnett and Joan Alison for the unproduced stage play Everybody Comes to Rick’s. Later portrayed by Humphrey Bogart in Michael Curtiz’s film adaptation Casablanca.Man With No Name (1964)  Created by Sergio Leone for A Fistful of Dollars, which was adapted from a ronin character in Kurosawa’s Yojimbo (1961).  Portrayed by Clint Eastwood.Charlie Brown (1948)  Created by Charles M. Shultz for the comic strip L’il Folks; popularized two years later in Peanuts.E.T. (1982)  Created by Melissa Mathison for the film E.T.: the Extra-Terrestrial.Arthur Fonzarelli (1974)  Created by Bob Brunner for the show Happy Days. Portrayed by Henry Winkler.)Phillip Marlowe (1939)  Created by Raymond Chandler for the novel The Big Sleep.Jay Gatsby (1925)  Created by F. Scott Fitzgerald for the novel The Great Gatsby.Lassie (1938) Created by Eric Knight for a Saturday Evening Post story, later turned into the novel Lassie Come-Home in 1940, film adaptation in 1943, and long-running television show in 1954.  Most famously portrayed by the dog Pal.
Fred Flintstone (1959)  Created by William Hanna and Joseph Barbera for The Flintstones. Voiced most notably by Alan Reed. Rooster Cogburn (1968)  Created by Charles Portis for the novel True Grit. Most famously portrayed by John Wayne in the 1969 film adaptation. Atticus Finch (1960)  Created by Harper Lee for the novel To Kill a Mockingbird.  (Appeared in the earlier work Go Set A Watchman, though this was not published until 2015)  Portrayed most famously by Gregory Peck in the Robert Mulligan film adaptation. Kermit the Frog (1955)  Created and performed by Jim Henson for the show Sam and Friends. Later popularized in Sesame Street (1969) and The Muppet Show (1976) George Bailey (1943)  Created by Phillip Van Doren Stern (then as George Pratt) for the short story The Greatest Gift. Later adapted into Capra’s It’s A Wonderful Life, starring James Stewart as the renamed George Bailey. Yoda (1980) Created by George Lucas for The Empire Strikes Back. Sam Malone (1982)  Created by Glen and Les Charles for the show Cheers.  Portrayed by Ted Danson. Zorro (1919)  Created by Johnston McCulley for the All-Story Weekly pulp magazine story The Curse of Capistrano.Later adapted to the Douglas Fairbanks’ film The Mark of Zorro (1920).Moe, Larry, and Curly (1928)  Created by Ted Healy for the vaudeville act Ted Healy and his Stooges. Mary Poppins (1934)  Created by P.L. Travers for the children’s book Mary Poppins. Ron Burgundy (2004)  Created by Will Ferrell and Adam McKay for the film Anchorman: The Legend of Ron Burgundy.  Portrayed by Will Ferrell. Mario (1981)  Created by Shigeru Miyamoto for the video game Donkey Kong. Harry Potter (1997)  Created by J.K. Rowling for the novel Harry Potter and the Philosopher’s Stone. The Dude (1998)  Created by Ethan and Joel Coen for the film The Big Lebowski. Portrayed by Jeff Bridges.
Gandalf (1937)  Created by J.R.R. Tolkien for the novel The Hobbit. The Grinch (1957)  Created by Dr. Seuss for the story How the Grinch Stole Christmas! Willy Wonka (1964)  Created by Roald Dahl for the children’s novel Charlie and the Chocolate Factory. The Hulk (1962)  Created by Stan Lee and Jack Kirby for The Incredible Hulk #1 (Marvel Comics) Scooby-Doo (1969)  Created by Joe Ruby and Ken Spears for the show Scooby-Doo, Where Are You! George Costanza (1989)  Created by Larry David and Jerry Seinfeld for the show Seinfeld.  Portrayed by Jason Alexander.Jules Winfield (1994)  Created by Quentin Tarantino for the film Pulp Fiction. Portrayed by Samuel L. Jackson. John McClane (1988)  Based on the character Detective Joe Leland, who was created by Roderick Thorp for the novel Nothing Lasts Forever. Later adapted into the John McTernan film Die Hard, starring Bruce Willis as McClane. Ellen Ripley (1979)  Created by Don O’cannon and Ronald Shusett for the film Alien.  Portrayed by Sigourney Weaver. Ralph Kramden (1951)  Created and portrayed by Jackie Gleason for “The Honeymooners,” which became its own show in 1955.Edward Scissorhands (1990)  Created by Tim Burton for the film Edward Scissorhands.  Portrayed by Johnny Depp.Eric Cartman (1992)  Created by Trey Parker and Matt Stone for the animated short Jesus vs Frosty.  Later developed into the show South Park, which premiered in 1997.  Voiced by Trey Parker.
Walter White (2008)  Created by Vince Gilligan for Breaking Bad.  Portrayed by Bryan Cranston. Cosmo Kramer (1989)  Created by Larry David and Jerry Seinfeld for Seinfeld.  Portrayed by Michael Richards.Pikachu (1996)  Created by Atsuko Nishida and Ken Sugimori for the Pokemon video game and anime franchise.Michael Scott (2005)  Based on a character from the British series The Office, created by Ricky Gervais and Steven Merchant.  Portrayed by Steve Carell.Freddy Krueger (1984)  Created by Wes Craven for the film A Nightmare on Elm Street. Most famously portrayed by Robert Englund.
Captain America (1941)  Created by Joe Simon and Jack Kirby for Captain America Comics #1 (Marvel Comics)Goku (1984)  Created by Akira Toriyama for the manga series Dragon Ball Z.Bambi (1923)  Created by Felix Salten for the children’s book Bambi, a Life in the Woods. Later adapted into the Disney film Bambi in 1942.Ronald McDonald (1963) Created by Williard Scott for a series of television spots.Waldo/Wally (1987) Created by Martin Hanford for the children’s book Where’s Wally? (Waldo in US edition) Frasier Crane (1984)  Created by Glen and Les Charles for Cheers.  Portrayed by Kelsey Grammar.Omar Little (2002)  Created by David Simon for The Wire.Portrayed by Michael K. Williams.
Wolverine (1974)  Created by Roy Thomas, Len Wein, and John Romita Sr for The Incredible Hulk #180 (Marvel Comics) Jason Voorhees (1980)  Created by Victor Miller for the film Friday the 13th. Betty Boop (1930)  Created by Max Fleischer and the Grim Network for the cartoon Dizzy Dishes. Bilbo Baggins (1937)  Created by J.R.R. Tolkien for the novel The Hobbit. Tom Joad (1939)  Created by John Steinbeck for the novel The Grapes of Wrath. Later adapted into the 1940 John Ford film and portrayed by Henry Fonda.Tony Stark (Iron Man) (1963)  Created by Stan Lee, Larry Lieber, Don Heck and Jack Kirby for Tales of Suspense #39 (Marvel Comics)Porky Pig (1935)  Created by Friz Freleng for the animated short film I Haven’t Got a Hat. Voiced most famously by Mel Blanc.Travis Bickle (1976)  Created by Paul Schrader for the film Taxi Driver. Portrayed by Robert De Niro.
Hawkeye Pierce (1968)  Created by Richard Hooker for the novel MASH: A Novel About Three Army Doctors.  Famously portrayed by both Alan Alda and Donald Sutherland. Don Draper (2007)  Created by Matthew Weiner for the show Mad Men.  Portrayed by Jon Hamm. Cliff Huxtable (1984)  Created and portrayed by Bill Cosby for The Cosby Show. Jack Torrance (1977)  Created by Stephen King for the novel The Shining. Later adapted into the 1980 Stanley Kubrick film and portrayed by Jack Nicholson. Holly Golightly (1958)  Created by Truman Capote for the novella Breakfast at Tiffany’s.  Later adapted into the 1961 Blake Edwards films starring Audrey Hepburn as Holly. Shrek (1990)  Created by William Steig for the children’s book Shrek! Later adapted into the 2001 film starring Mike Myers as the titular character. Optimus Prime (1984)  Created by Dennis O’Neil for the Transformers toy line.Sonic the Hedgehog (1991)  Created by Naoto Ohshima and Yuji Uekawa for the Sega Genesis game of the same name.Harry Callahan (1971)  Created by Harry Julian Fink and R.M. Fink for the movie Dirty Harry.  Portrayed by Clint Eastwood.Bubble: Hercule Poirot, Tyrion Lannister, Ron Swanson, Cercei Lannister, J.R. Ewing, Tyler Durden, Spongebob Squarepants, The Genie from Aladdin, Pac-Man, Axel Foley, Terry Malloy, Patrick Bateman
Pre-20th Century: Santa Claus, Dracula, Robin Hood, Cinderella, Huckleberry Finn, Odysseus, Sherlock Holmes, Romeo and Juliet, Frankenstein, Prince Hamlet, Uncle Sam, Paul Bunyan, Tom Sawyer, Pinocchio, Oliver Twist, Snow White, Don Quixote, Rip Van Winkle, Ebenezer Scrooge, Anna Karenina, Ichabod Crane, John Henry, The Tooth Fairy,
Br’er Rabbit, Long John Silver, The Mad Hatter, Quasimodo """)


character_matches = matcher(fictional_char_doc)

The PhraseMatcher returns a list of (match_id, start, end) tuples, describing the matches. A match tuple describes a span doc[start:end].

The match_id refers to the string ID of the match pattern.

# Matching positions
character_matches
#> [(520014689628841516, 1366, 1368),
 #> (520014689628841516, 1379, 1381),
 #> (520014689628841516, 2113, 2115)]

You can see that 3 of the terms have been found in the text, but we dont know what they are. For that , you need to extract the Span using start and end as shown below.

# Matched items
for match_id, start, end in character_matches:
    span = fictional_char_doc[start:end]
    print(span.text)
#> Batman
#> Batman
#> Harry Potter
#> Harry Potter
#> Tony Stark

You can see that ‘Harry Potter’ and ‘Batman’ were mentioned twice ,
‘Tony Stark’ once, but the other terms didn’t match.

Another useful feature of PhraseMatcher is that while intializing the matcher, you have an option to use the parameter attr, using which you can set rules for how the matching has to happen.

How to use attr?

Setting a attr to match on will change the token attributes that will be compared to determine a match. For example, if you use attr='LOWER', then case-insensitive matching will happen.

For understanding, I shall demonstrate it in the below example.

# Using the attr parameter as 'LOWER'
case_insensitive_matcher = PhraseMatcher(nlp.vocab, attr="LOWER")

# Creating doc & pattern
my_doc=nlp('I wish to visit new york city')
terms=['New York']
pattern=[nlp(term) for term in terms]

# adding pattern to the matcher
case_insensitive_matcher.add("matcher",None,*pattern)

# applying matcher to the doc
my_matches=case_insensitive_matcher(my_doc)

for match_id,start,end in my_matches:
  span=my_doc[start:end]
  print(span.text)
#> new york

You can observe that irrespective the difference in the case, the phrase was successfully matched.

Let’s see a more useful case.

If you set the attr='SHAPE', then matching will be based on the shape of the terms in pattern .

This can be used to match URLs, dates of specific format, time-formats, where the shape will be same. Let us consider a text having information about various radio channels.

You want to extract the channels (in the form of ddd.d)

my_doc = nlp('From 8 am , Mr.X will be speaking on your favorite chanel 191.1. Afterward there shall be an exclusive interview with actor Vijay on channel 194.1 . Hope you are having a great day. Call us on 666666')

Let us create the pattern. You need to pass an example radio channel of the desired shape as pattern to the matcher.

pattern=nlp('154.6')

Your pattern is ready , now initialize the PhraseMatcher with attribute set as "SHAPE".. Then add the pattern to matcher.

# Initializing the matcher and adding pattern

pincode_matcher= PhraseMatcher(nlp.vocab,attr="SHAPE")
pincode_matcher.add("pincode_matching", None, pattern)

You can apply the matcher to your doc as usual and print the matching phrases.

# Applying matcher on doc
matches = pincode_matcher(my_doc)

# Printing the matched phrases
for match_id, start, end in matches:
  span = my_doc[start:end]
  print(span.text)
#> 191.1
#> 194.1

Above output has successfully printed the mentioned radio-channel stations.

Entity Ruler

Entity Ruler is intetesting and very useful.

While trying to detect entities, some times certain names or organizations are not recognized by default. It might be because they are small scale or rare. Wouldn’t it be better to improve accuracy of our doc.ents_ method ?

spaCy provides a more advanced component EntityRuler that let’s you match named entities based on pattern dictionaries. Overall, it makes Named Entity Recognition more efficient.

It is a pipeline supported component and can be imported as shown below .

from spacy.pipeline import EntityRuler

Initialize the EntityRuler as shown below

# Initialize
ruler = EntityRuler(nlp)

What type of patterns do you pass to the EntityRuler ?

Basically, you need to pass a list of dictionaries, where each dictionary represents a pattern to be matched.

Each dictionary has two keys "label" and "pattern".

  • label : Holds the entity type as values eg: PERSON, GPE, etc
  • pattern: Holds the the matcher pattern as values eg: John, Calcutta, etc

For example, let us consider a situation where you want to add certain book names under the entity label WORK_OF_ART.

What will be your pattern ?

My label will be WORK_OF_ART and pattern will contain the book names I wish to add. Below code demonstrates the same.

pattern=[{"label": "WORK_OF_ART", "pattern": "My guide to statistics"}]

You can add pattern to the ruler through add_patterns() function

ruler.add_patterns(pattern)

How can you apply the EntityRuler to your text ?

You can add it to the nlp model through add_pipe() function. It Adds the ruler component to the processing pipeline

# Add entity ruler to the NLP pipeline. 
# NLP pipeline is a sequence of NLP tasks that spaCy performs for a given text
# More on pipelines coming in future section in this post.
nlp.add_pipe(ruler)

Now , the EntityRuler is incorporated into nlp. You can pass the text document to nlp to create a spacy doc . As the ruler is already added, by default “My guide to statistics” will be recognized as named entities under category WORK_OF_ART.

You can verify it through below code

# Extract the custom entity type 
doc = nlp(" I recently published my work fanfiction by Dr.X . Right now I'm studying the book of my friend .You should try My guide to statistics for clear concepts.")
print([(ent.text, ent.label_) for ent in doc.ents])
#> [('My guide to statistics', 'WORK_OF_ART')]

You have successfuly enhanced the named entity recoginition. It is possible to train spaCy to detect new entities it has not seen as well.

EntityRuler has many amazing features, you’ll run into them later in this article.

14. Word Vectors and similarity

Word Vectors are numerical vector representations of words and documents. The numeric form helps understand the semantics about the word and can be used for NLP tasks such as classification.

Because, vector representation of words that are similar in meaning and context appear closer together.

spaCy models support inbuilt vectors that can be accessed through directly through the attributes of Token and Doc. How can you check if the model supports tokens with vectors ?

First, load a spaCy model of your choice. Here, I am using the medium model for english en_core_web_md. Next, tokenize your text document with nlp boject of spacy model.

You can check if a token has in-buit vector through Token.has_vector attribute.

!python -m spacy download en_core_web_md
# Check if word vector is available
import spacy

# Loading a spacy model
nlp = spacy.load("en_core_web_md")
tokens = nlp("I am an excellent cook")

for token in tokens:
  print(token.text ,' ',token.has_vector)
#> I   True
#> am   True
#> an   True
#> excellent   True
#> cook   True

You can see that all tokens in above text have a vector. It is because these words are pre-existing or the model has been trained on them. Let’s see what is the result when the text has some non-existent / made up word .

# Check if word vector is available
tokens=nlp("I wish to go to hogwarts lolXD ")
for token in tokens:
  print(token.text,' ',token.has_vector)
#> I   True
#> wish   True
#> to   True
#> go   True
#> to   True
#> hogwarts   True
#> lolXD   False

The word “lolXD” is not a part of the model’s vocabulary, hence it does not have a vector.

How to access the vector of the tokens?

You can access through token.vector method. Also ,token.vector_norm attribute stores L2 norm of the token’s vector representation.

# Extract the word Vector
tokens=nlp("I wish to go to hogwarts lolXD ")
for token in tokens:
  print(token.text,' ',token.vector_norm)
#> I   6.4231944
#> wish   5.1652417
#> to   4.74484
#> go   5.05723
#> to   4.74484
#> hogwarts   7.4110312
#> lolXD   0.0

You can notice that when vector is not present for a token, the value of vector_norm is 0 for it.

Identifying similarity of two words or tokens is very crucial . It is the base to many everyday NLP tasks like text classification , recommendation systems, etc.. It is necessary to know how similar two sentences are , so they can be grouped in same or opposite category.

How to find similarity of two tokens?

Every Doc or Token object has the function similarity(), using which you can compare it with another doc or token.

Know about cosine similarity.

It returns a float value. Higher the value is, more similar are the two tokens or documents.

# Compute Similarity
token_1=nlp("bad")
token_2=nlp("terrible")

similarity_score=token_1.similarity(token_2)
print(similarity_score)
#> 0.7739191815858104

That is how you use the similarity function.

Let me show you an example of how similarity() function on docs can help in text categorization.

review_1=nlp(' The food was amazing')
review_2=nlp('The food was excellent')
review_3=nlp('I did not like the food')
review_4=nlp('It was very bad experience')

score_1=review_1.similarity(review_2)
print('Similarity between review 1 and 2',score_1)

score_2=review_3.similarity(review_4)
print('Similarity between review 3 and 4',score_2)
#> Similarity between review 1 and 2 0.9566212627033192
#> Similarity between review 3 and 4 0.8461898618188776

You can see that first two reviews have high similarity score and hence will belong in the same category(positive).

You can also check if two tokens or docs are related (includes both similar side and opposite sides) or completely irrelevant.

# Compute Similarity between texts 
pizza=nlp('pizza')
burger=nlp('burger')
chair=nlp('chair')

print('Pizza and burger  ',pizza.similarity(burger))
print('Pizza and chair  ',pizza.similarity(chair))
#> Pizza and burger   0.7269758865234512
#> Pizza and chair   0.1917966191121549

You can observe that pizza and burger are both food items and have good similarity score.

Whereas, pizza and chair are completely irrelevant and score is very low.

15. Merging and Splitting Tokens with retokenize

When nlp object is called on a text document, spaCy first tokenizes the text to produce a Docobject. The Tokenizer is the pipeline component responsible for segmenting the text into tokens.

Sometime tokenization splits a combined word into two tokens instead of keeping it as one unit.

Consider the below case, you have a text document on a film ‘John Wick’.

# Printing tokens of a text
text="John Wick is a 2014 American action thriller film directed by Chad Stahelski"
doc=nlp(text)
for token in doc:
  print(token.text)
#> John
#> Wick
#> is
#> a
#> 2014
#> American
#> action
#> thriller
#> film
#> directed
#> by
#> Chad
#> Stahelski

You can see from the output that ‘John’ and ‘Wick’ have been recognized as separate tokens. Same goes for the director’s name “Chad Stahelski”

But in this case, it would make it easier if “John Wick” was considered a single token.

So, How to combine the tokens?

spaCy provides Doc.retokenize , a context manager that allows you to merge and split tokens. For merging two or more tokens , you can make use of the retokenizer.merge() function.

How to use the retokenizer.merge() ?

The input arguments shall be:

  • span : You can pass a span, which contains the slice of doc you wanted to be treated as a single token. In this case, John wick is stored in a span and passed as input. span=doc[0:2]
  • attrs : You can use it to set attributes to set on the merged token. Here, I want to set the POS (part of speech tag) for “John Wick” as PROPN.(proper noun). You can use attrs={"POS" : "PROPN"} to achieve it.
# Using retokenizer.merge() 
with doc.retokenize() as retokenizer:
    attrs = {"POS": "PROPN"}
    retokenizer.merge(doc[0:2], attrs=attrs)

for token in doc:
  print(token.text)
#> John Wick
#> is
#> a
#> 2014
#> American
#> action
#> thriller
#> film
#> directed
#> by
#> Chad
#> Stahelski

You can also verify if John wick has been assigned ‘PROPN’ pos tag through below code.

# Printing tokens after merging
for token in doc:
  print(token.text,token.pos_)
#> John Wick PROPN
#> is AUX
#> a DET
#> 2014 NUM
#> American ADJ
#> action NOUN
#> thriller NOUN
#> film NOUN
#> directed VERB
#> by ADP
#> Chad PROPN
#> Stahelski PROPN

The attribute has been added correctly.

You have seen how to merge tokens. Now, let us have a look at how to split tokens. Consider below text.

text = 'I purchased the trendy OnePlus7'

What if you want to store the versions ‘7T’ and ‘5T’ as seperate tokens. How can you split the tokens ?

spaCy provides retokenzer.split() method to serve this purpose.

The input parameters are :

  • token : The token of the doc which has to be split
  • orths : A list of texts, matching the original token. This is to tell the retokinzer how to split the token
  • heads : List of token or (token, subtoken) tuples specifying the tokens to attach the newly split subtokens to.
  • attrs : You can pass a dictionary to set attributes on all split tokens. Attribute names mapped to list of per-token attribute values.
# Splitting tokens using retokenizer.split()
doc=nlp('I purchased the trendy OnePlus7 ')
with doc.retokenize() as retokenizer:
    heads = [(doc[3], 1), doc[2]]
    retokenizer.split(doc[4], ["OnePlus", "7"],heads=heads)

for token in doc:
  print(token.text)
#> I
#> purchased
#> the
#> trendy
#> OnePlus
#> 7

16. spaCy pipelines

You have used tokens and docs in many ways till now. In this section, let’s dive deeper and understand the basic pipeline behind this.

When you call the nlp object on spaCy, the text is segmented into tokens to create a Doc object. Following this, various process are carried out on the Doc to add the attributes like POS tags, Lemma tags, dependency tags,etc..

This is referred as the Processing Pipeline

What are pipeline components ?

The processing pipeline consists of components, where each component performs it’s task and passes the Processed Doc to the next component. These are called as pipeline components.

spaCy provides certain in-built pipeline components. Let’s look at them.

The built-in pipeline components of spacy are :

  • Tokenizer : It is responsible for segmenting the text into tokens are turning a Doc object. This the first and compulsory step in a pipeline.
  • Tagger : It is responsible for assigning Part-of-speech tags. It takes a Doc as input and createsDoc[i].tag
  • DependencyParser : It is known as parser. It is responsible for assigning the dependency tags to each token. It takes a Doc as input and returns the processed Doc
  • EntityRecognizer : This component is referred as ner. It is responsible for identifying named entities and assigning labels to them.
  • TextCategorizer : This component is called textcat. It will assign categories to Docs.
  • EntityRuler : This component is called * entity_ruler*.It is responsible for assigning named entitile based on pattern rules. Revisit Rule Based Matching to know more.
  • Sentencizer : This component is called **sentencizer** and can perform rule based sentence segmentation.
  • merge_noun_chunks : It is called mergenounchunks. This component is responsible for merging all noun chunks into a single token. It has to be add in the pipeline after tagger and parser.
  • merge_entities : It is called merge_entities .This component can merge all entities into a single token. It has to added after the ner.
  • merge_subtokens : It is called merge_subtokens. This component can merge the subtokens into a single token.

These are the various in-built pipeline components. It is not necessary for every spaCy model to have each of the above components.

After loading a spaCy model , you check or inspect what pipeline components are present.

How to inspect the pipeline ?

After loading the spacy model and creating a Language object nlp, you view the list of pipeline components present by default using nlp.pipe_names attribute

# Inspect a pipeline
import spacy
nlp = spacy.load("en_core_web_sm")
print(nlp.pipe_names)
#> ['tagger', 'parser', 'ner']

You can also check if a particular component is present in the pipline through nlp.has_pipe. You have to pass the name of the component like tagger , ner ,textcat as input.

# Check if pipeline component present
nlp.has_pipe('textcat')
False

Above output tells you that textcat component is not present in the current pipeline.

How to add a component to the pipeline ?

You can add a component to the processing pipeline through nlp.add_pipe() method. You have to pass the component to be added as input.

The component can also be written by you, i.e, custom made pipeline component. (We will come to this later). In case you want to add an in-built component like textcat, how to do it ?

You can use nlp.create_pipe() and pass the component name to get any in-built pipeline component.

# Add new pipeline component
nlp.add_pipe(nlp.create_pipe('textcat'))

Now , you can verify if the component was added using nlp.pipe_names().

nlp.pipe_names
#> ['tagger', 'parser', 'ner', 'textcat']

Observe that textcat has been added at the last. The order of the components signify the order in which the Doc will be processed.

How to specify where you want to add the new component?

The nlp.add_pipe() method provides various arguments for this. You can set one among before, after, first or last to True.

By default, last=True is used.

If you want textcat before ner, you can set before=ner. If you want it to be at first you can set first=True. Just remeber that you should not pass more than one of these arguments as it will lead to contradiction.

# Adding a pipeline component
nlp.add_pipe(nlp.create_pipe('textcat'),before='ner')
nlp.pipe_names
#> ['tagger', 'parser', 'textcat', 'ner']

You can see that above code has added textcat component before ner component.

How to remove, replace and rename pipepline components ?

It is always advisable to have only the necessary components in the processing pipeline. Otherwise, the component will create and store attributes which are not going to be used . This causes waste of memory and also takes more time to process.

To avoid this , you can remove unnecessary pipeline components, using nlp.remove_pipe() method .

# Printing the components initially
print(' Pipeline components present initially')
print(nlp.pipe_names)

# Removing a pipeline component and printing 
nlp.remove_pipe("textcat")
print('After removing the textcat pipeline')
print(nlp.pipe_names)
#> Pipeline components present initially
#> ['tagger', 'parser', 'ner', 'textcat']
#> After removing the textcat pipeline
#> ['tagger', 'parser', 'ner']

You can rename a pipeline component giving your own custom name through nlp.rename_pipe() method.

Pass the the original name of the component and the new name you want as shown below

# Renaming pipeline components
nlp.rename_pipe(old_name='ner',new_name='my_custom_ner')
nlp.pipe_names
#> ['tagger', 'parser', 'my_custom_ner']

The name of component changed in above output.

spaCy also allows you to create your own custom pipelines. We shall discuss more on this later. When you have to use different component in place of an existing component, you can use nlp.replace_pipe() method.

nlp.replace_pipe
<bound method Language.replace_pipe of <spacy.lang.en.English object at 0x7f334488d390>>

17. Methods for Efficient processing

While dealing with huge amount of text data , the process of converting the text into processed Doc ( passing through pipeline components) is often time consuming.

In this section , you’ll learn various methods for different situations to help you reduce computational expense.

Let’s say you have a list of text data , and you want to process them into Doc onject. The traditional method is to call nlp object on each of the text data . Below is the given list.

list_of_text_data=['In computer science, artificial intelligence (AI), sometimes called machine intelligence, is intelligence demonstrated by machines, in contrast to the natural intelligence displayed by humans and animals.','Leading AI textbooks define the field as the study of "intelligent agents": any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals.','Colloquially, the term "artificial intelligence" is often used to describe machines (or computers) that mimic "cognitive" functions that humans associate with the human mind, such as "learning" and "problem solving','As machines become increasingly capable, tasks considered to require "intelligence" are often removed from the definition of AI, a phenomenon known as the AI effect.','The term military simulation can cover a wide spectrum of activities, ranging from full-scale field-exercises,[2] to abstract computerized models that can proceed with little or no human involvement','As a general scientific principle, the most reliable data comes from actual observation and the most reliable theories depend on it.[4] This also holds true in military analysis','Any form of training can be regarded as a "simulation" in the strictest sense of the word (inasmuch as it simulates an operational environment); however, many if not most exercises take place not to test new ideas or models, but to provide the participants with the skills to operate within existing ones.','ull-scale military exercises, or even smaller-scale ones, are not always feasible or even desirable. Availability of resources, including money, is a significant factor—it costs a lot to release troops and materiel from any standing commitments, to transport them to a suitable location, and then to cover additional expenses such as petroleum, oil and lubricants (POL) usage, equipment maintenance, supplies and consumables replenishment and other items','Moving away from the field exercise, it is often more convenient to test a theory by reducing the level of personnel involvement. Map exercises can be conducted involving senior officers and planners, but without the need to physically move around any troops. These retain some human input, and thus can still reflect to some extent the human imponderables that make warfare so challenging to model, with the advantage of reduced costs and increased accessibility. A map exercise can also be conducted with far less forward planning than a full-scale deployment, making it an attractive option for more minor simulations that would not merit anything larger, as well as for very major operations where cost, or secrecy, is an issue']

First , create the doc normally calling nlp() on each individual text. You can use %%timeit to know the time taken.

%%timeit
docs = [nlp(text) for text in list_of_text_data]
#> 10 loops, best of 3: 118 ms per loop

You can observe the time taken. Another efficient method of creating the doc is using nlp.pipe() method. You can pass the list as input to this. This method takes less time , as it processes the texts as a stream rather than individually.

%%timeit
docs = list(nlp.pipe(list_of_text_data))
#> 10 loops, best of 3: 57.5 ms per loop

From above output , you can observe that time taken is less using nlp.pipe() method. When the amount of data will be very large, the time difference will be very important.

Another way to keep the process efficient is using only the pipeline components you need. For example , if your problem does not use POS tags , then tagger is not necessary.

The unnecessary pipeline components can be disabled to improve loading speed and efficiency.

How to disable pipeline components in spaCy?

There are two common cases where you will need to disable pipeline components.

First case is when you don’t need the component throughout your project. In this case, you can disable the component while loading the spacy model itself. This will save you a great deal of time. It can be done through the disable argument of spacy.load() function.

Below code demonstrates how to disable loading of tagger and parser.

# disabling loading of components
nlp = spacy.load("en_core_web_sm", disable=["tagger", "parser"])
print(nlp.has_pipe('tagger'))
print(nlp.has_pipe('parser'))
#> False
#> False

The second case is when you need the component during specific times of your task, but not throughout. So, here you’ll have to load the components and their weights.

At some point, if you need a Doc object with only part-of speech tags, there is no need for ner and parser . You can use the disable keyword argument on nlp.pipe() method to temporarily disable the components during processing.

Below code passes a list of pipeline components to be disabled temporarily to the argument diable.

nlp=spacy.load('en_core_web_sm')
for doc in nlp.pipe(list_of_text_data, disable=["ner", "parser"]):
  print(doc.is_tagged)
#> True
#> True
#> True
#> True
#> True
#> True
#> True
#> True
#> True

An extension of this method is to disable pipeline components for a whole block.

The context manager nlp.disable_pipes() can be used for disabling components for a whole block. You can write the code which doesn’t require the component inside the block. For any code written outside the block , the pipeline components are available.

The below example demonstrates how to disable tagger and ner in a block of code.

nlp=spacy.load('en_core_web_sm')

# Block where pipelines are disabled
with nlp.disable_pipes("tagger", "ner"):
    print('-- Inside the block--')
    doc = nlp(" The pandemic has disrupted the lives of may")
    print(doc.is_nered)

# The block has ended , 
print('-- outside the block--')
doc = nlp("I will be tagged and parsed")
doc.is_nered
#> -- Inside the block--
#>False
#> -- outside the block--
#> True

Till now, you have seen how to add, remove, or disable the in-built pipeline components. Sometimes, the existing pipeline component may not be the best for your task.

Can you create your own pipeline components?

We shall discuss it in the following section.

18. Creating custom pipeline components

We know that a pipeline component takes the Doc as input, performs functions, adds attributes to the doc and returns a Processed Doc. Here, we shall see how to create your own pipeline component or custom pipeline component.

Custom pipeline components let you add your own function to the spaCy pipeline that is executed when you call the nlpobject on a text.

Steps to create a custom pipeline component

First, write a function that takes a Doc as input, performs neccessary tasks and returns a new Doc. Then, add this function to the spacy pipeline through nlp.add_pipe() method.

The parameters of add_pipe you have to provide :

  • component : You have to pass the function_name as input . This serves as our component
  • name : You can assign a name to the component. The component can be called using this name. If you don’t provide any ,the function_name will be taken as name of the component
  • first,last : If you want the new component to be added first or last ,you can setfirst=True or last=True accordingly.
  • before , after : If you want to add the component specifically before or after another component , you can use these arguments.

Note that you can set only one among first, last, before, after arguments, otherwise it will lead to error.

Let’s discuss a set of examples to understand the implementation.

Say you want to add a pipeline component that will print the length of the doc, and also the various types of named entities present in the doc.

First step – Write a function my_custom_component() to perform the tasks on the input doc and return it.

Second step – Add the component to the pipeline using nlp.add_pipe(my_custom_component). Also , you need to insert this component after ner so that entities will bw stored in doc.ents

# Define the custom component that prints the doc length and named entities.
def my_custom_component(doc):
    doc_length = len(doc)
    print(' The no of tokens in the document ', doc_length)
    named_entity=[token.label_ for token in doc.ents]
    print(named_entity)
    # Return the doc
    return doc


# Load the small English model
nlp = spacy.load("en_core_web_sm")

# Add the component in the pipeline after ner
nlp.add_pipe(my_custom_component, after='ner')
print(nlp.pipe_names)

# Call the nlp object on your text
doc = nlp(" The Hindu Newspaper has increased the cost. I usually read the paper on my way to Delhi railway station ")
#> ['tagger', 'parser', 'ner', 'my_custom_component']
#> The no of tokens in the documet  24
#> ['ORG', 'GPE', 'PRODUCT']

See that the component was successfully added to the pipeline and printed the enity labels are doc length.

Pipeline component example

Let’s level up and try implementing more complex case.

Consider you have a doc and you want to add a pipeline component that can find some book names present and add add them to doc.ents.

To make this possible , you can create a custom pipeline component that uses PhraseMatcherto find book names in the doc and add the to the doc.ents attribute.

I suggest you to scroll up and have another read through Rule based matching with PhraseMatcher . Let’s first import and initialize the matcher with vocab . Next, write the pattern with names of books you want to be matched. Add the pattern to the matcher using matcher.add() by passing the pattern.

# Importing PhraseMatcher from spacy and intialize with a model's vocab
from spacy.matcher import PhraseMatcher
nlp = spacy.load("en_core_web_sm")
matcher = PhraseMatcher(nlp.vocab)

# List of book names to be matched 
book_names = ['Pride and prejudice','Mansfield park','The Tale of Two cities','Great Expectations']

# Creating pattern - list of docs through nlp.pipe() to save time
book_patterns = list(nlp.pipe(book_names))

# Adding the pattern to the matcher
matcher.add("identify_books", None, *book_patterns)

You can go ahead and write the function for custom pipeline. This function shall use the matcher to find the patterns in the doc , add it to doc.ents and return the doc. Note that when matcher is applied on a Doc , it returns a tuple containing (match_id,start,end). You can extract the span using the start and end indices and store it in doc.ents

# Import Span to slice the Doc
from spacy.tokens import Span

# Define the custom pipeline component
def identify_books(doc):
    # Apply the matcher to YOUR doc
    matches = matcher(doc)
    # Create a Span for each match and assign them under label "BOOKS"
    spans = [Span(doc, start, end, label="BOOKS") for match_id, start, end in matches]
    # Store the matched spans in doc.ents
    doc.ents = spans
    return doc

Your custom component identify_books is also ready. Final step is to add this to the spaCy’s pipeline through nlp.add_pipe(identify_books) method.

# Adding the custom component to the pipeline after the "ner" component
nlp.add_pipe(identify_books, after="ner")
print(nlp.pipe_names)

# Calling the nlp object on the text
doc = nlp("The library has got several new copies of Mansfield park and Great Expectations . I have filed a suggestion to buy more copies of The Tale of Two cities ")

# Printing entities and their labels to verify
print([(ent.text, ent.label_) for ent in doc.ents])
#> ['tagger', 'parser', 'ner', 'identify_books']
#> [('Mansfield park', 'BOOKS'), ('Great Expectations', 'BOOKS'), ('The Tale of Two cities', 'BOOKS')]

From above output , you can verify that the patterns have been identified and successfully placed under category “BOOKS”.

That’s how custom pipelines are useful in various situations.

  1. Train Custom NER with SpaCy
  2. 101 NLP Exercises
  3. Gensim Tutorial
  4. Lemmatization Approaches
  5. Topic Modeling
  6. Cosine Similarity
  7. Visualizing Topic Models

This article was contributed by Shrivarsheni.

2,942 thoughts on “spaCy Tutorial – Complete Writeup”

  1. Keep it up!. I usually don’t post in Blogs but your blog forced me to, amazing work.. beautiful A rise in An increase in An increase in.

  2. I Am Going To have to come back again when my course load lets up – however I am taking your Rss feed so i can go through your site offline. Thanks.

  3. I was suggested this website by my cousin. I am not sure whether this post is written by him as no one else know such detailed about my difficulty. You are wonderful! Thanks!

  4. I think this is one of the most vital info
    for me. And i am glad reading your article. But want to remark on some general things,
    The web site style is ideal, the articles is really nice : D.

    Good job, cheers

  5. Very good blog! Do you have any tips and hints for
    aspiring writers? I’m planning to start my own site soon but
    I’m a little lost on everything. Would you propose starting with a free
    platform like WordPress or go for a paid option? There are so many options out there that I’m completely overwhelmed ..
    Any tips? Thank you!

  6. Fantastic beat ! I wish to apprentice at the same time as you amend your website,
    how could i subscribe for a blog website? The account helped me a
    appropriate deal. I have been a little bit familiar of this
    your broadcast provided vivid clear concept

  7. Heya just wanted to give you a quick heads
    up and let you know a few of the pictures aren’t loading properly.
    I’m not sure why but I think its a linking issue.
    I’ve tried it in two different browsers and both show the
    same results.

  8. There is a wonderful rhythm in your writing that makes every sentence flow naturally like a conversation with an old friend, and while enjoying your story I was reminded that meaningful experiences, whether created through words or activities like Color Games, are often remembered because of the emotions they create.

  9. Hi! Would you mind if I share your blog with my twitter group?
    There’s a lot of people that I think would really appreciate your
    content. Please let me know. Many thanks

  10. Definitely believe that which you said. Your favorite reason seemed to be on the web the simplest thing to be aware of.
    I say to you, I definitely get irked while people consider worries that they just do not know about.
    You managed to hit the nail upon the top as well as defined out the whole thing
    without having side-effects , people could take a signal.
    Will likely be back to get more. Thanks

  11. I think that may be an interesting element, it made me assume a bit. Thanks for sparking my considering cap. On occasion I get so much in a rut that I simply really feel like a record.

  12. Do you have a spam problem on this blog; I also
    am a blogger, and I was curious about your situation; many of us have created some nice methods and we
    are looking to trade methods with other folks,
    why not shoot me an e-mail if interested.

  13. Howdy! I’m at work surfing around your blog from my new apple iphone!

    Just wanted to say I love reading through your blog and look forward to all your posts!
    Keep up the outstanding work!

  14. Brandonmople

    Совместные закупки в Саратове подходят для людей, которые любят искать выгодные предложения. В таких заказах можно найти одежду, обувь, аксессуары, косметику, товары для детей и многое другое. Общий формат покупки делает стоимость привлекательнее и помогает экономить: https://saratov-sp.ru/

  15. I just like the helpful information you supply on your articles.
    I’ll bookmark your blog and check once more here frequently.
    I am rather certain I’ll learn many new stuff proper
    here! Best of luck for the following!

  16. These kind of posts are always inspiring and I prefer to read quality content so I happy to find many good point here in the post. writing is simply wonderful! thank you for the post

  17. I wrote down your blog in my bookmark. I hope that it somehow did not fall and continues to be a great place for reading texts.

  18. Its like you read my mind! You seem to know a lot about this, like you wrote the book in it or something. I think that you can do with some pics to drive the message home a bit, but other than that, this is wonderful blog. A great read. I’ll certainly be back.

  19. Viagra merupakan salah satu terapi yang tersedia untuk mengatasi disfungsi ereksi.
    Namun, penggunaannya harus disesuaikan dengan kondisi masing-masing individu.

  20. Rasmiy sayt to’liq o’zbek tilida ishlaydi va foydalanuvchilar uchun qulay interfeysga ega.

    Rasmiy saytdagi kazino bo’limi yetakchi provayderlardan ko’plab o’yinlarni o’z ichiga oladi.

    888 [url=http://www.888stars9.com/]888[/url]

    Foydalanuvchilar rasmiy saytda yirik jahon turnirlari va mahalliy ligalarga stavka qo’yishlari mumkin.

    888Starz O’zbekistondagi o’yinchilar uchun mavjud eng so’nggi bonus va takliflarni ajratib beradi.

    888Starz yangi hisobni bir necha usulda, atigi bir necha daqiqada yaratish imkonini beradi.

  21. Heya just wanted to give you a quick heads up and let
    you know a few of the images aren’t loading correctly.
    I’m not sure why but I think its a linking issue. I’ve tried it in two different web browsers and both
    show the same results.

  22. This blog post is excellent, probably because of how well the subject was developed. I like some of the comments too though I could prefer we all stay on the subject in order add value to the subject!

  23. I appreciate how your writing avoids unnecessary exaggeration and allows the story itself to create interest because that kind of sincerity is becoming rare online, and it reminded me of another forum conversation where wild ape 3258 was shared naturally.

  24. I came across your article while casually exploring different stories online, and I was honestly surprised by how your words turned a simple topic into something meaningful and memorable, which reminded me of another enjoyable conversation where YELLOW BAT was mentioned naturally among readers sharing their experiences.

  25. Wonderful website. Lots of helpful information here.
    I am sending it to several friends ans additionally sharing in delicious.
    And certainly, thank you to your sweat!

  26. Hi there! I just wanted to ask if you ever have any trouble with hackers? My last blog (wordpress) was hacked and I ended up losing several weeks of hard work due to no back up. Do you have any solutions to protect against hackers?

  27. Spot on with this write-up, I truly believe this website requirements a lot much more consideration. I’ll probably be once more to read much much more, thanks for that info.

  28. Oh my goodness! Awesome article dude! Thank you, However I am
    having difficulties with your RSS. I don’t understand
    the reason why I can’t join it. Is there anyone else getting identical RSS issues?
    Anyone who knows the solution will you kindly respond?
    Thanks!!

  29. Greetings! Quick question that’s entirely off topic. Do you know how to make your site mobile friendly?
    My blog looks weird when viewing from my iphone4. I’m trying to
    find a template or plugin that might be able to correct this issue.
    If you have any recommendations, please share. Appreciate it!

  30. Hi there are using WordPress for your site platform?
    I’m new to the blog world but I’m trying to get started and set up my own. Do you need
    any coding expertise to make your own blog? Any help would be greatly appreciated!

  31. Hey I am so excited I found your blog, I really found you by error, while
    I was looking on Google for something else, Regardless I am here now and would just like to say thanks for a fantastic post and a all round exciting blog (I also love the theme/design), I don’t have
    time to browse it all at the minute but I have saved
    it and also included your RSS feeds, so when I have time I will be back to read a lot more, Please do keep up the fantastic work.

  32. เนื้อหานี้ อ่านแล้วเข้าใจง่าย ครับ
    ดิฉัน เพิ่งเจอข้อมูลเกี่ยวกับ เรื่องที่เกี่ยวข้อง
    ซึ่งอยู่ที่ bk88
    เผื่อใครสนใจ
    มีการยกตัวอย่างที่เข้าใจง่าย
    ขอบคุณที่แชร์ ข้อมูลที่มีประโยชน์ นี้
    จะรอติดตามเนื้อหาใหม่ๆ ต่อไป

  33. I like the valuable information you provide in your
    articles. I’ll bookmark your blog and check again here regularly.

    I am quite sure I will learn many new stuff right here! Good
    luck for the next!

  34. Quality posts is the key to interest the users to pay a quick visit the web page, that’s what this website is
    providing.

  35. Thank you for any other informative web site.

    Where else could I am getting that type of info written in such a perfect approach?
    I’ve a mission that I’m just now operating on, and I’ve been at the glance
    out for such info.

  36. This is a really good tip especially to those new to the
    blogosphere. Simple but very precise information… Thanks for
    sharing this one. A must read article!

  37. Здорова, народ Близкий человек уже неделю в запое Соседи стучат в стену Скорая не приедет на такой вызов Короче, врачи вытащили с того света — наркологический стационар с круглосуточным наблюдением Врачи наблюдали 24/7 В общем, жмите чтобы сохранить — наркологический стационар москва [url=https://narkologicheskij-staczionar-moskva-lba.ru]https://narkologicheskij-staczionar-moskva-lba.ru[/url] Звоните прямо сейчас Перешлите тем кто в отчаянии

  38. I’m curious to find out what blog platform you have been utilizing?
    I’m having some minor security issues with my latest site and I’d
    like to find something more safeguarded. Do you have any solutions?

  39. I do agree with all the ideas you have offered in your post.
    They’re very convincing and can certainly work. Still, the posts are very short for novices.
    May just you please extend them a little from subsequent
    time? Thanks for the post.

  40. Can I just say what a relief to seek out someone who actually knows what theyre speaking about on the internet. You positively know find out how to bring a problem to mild and make it important. Extra individuals have to read this and perceive this side of the story. I cant believe youre not more in style because you positively have the gift.

  41. Приветствую народ Мой брат уже две недели в запое Родные просто в шоке Платная наркология — бешеные счета Короче, единственное что сработало — вывод из запоя санкт-петербург стационар с палатой Положили в отдельную палату В общем, не потеряйте контакты — вывод из запоя в стационаре наркологии [url=https://vyvod-iz-zapoya-v-staczionare-sankt-peterburg-zqe.ru]вывод из запоя в стационаре наркологии[/url] Не надейтесь на чудо Это может спасти жизнь близкого

  42. I favored your idea there, I tell you blogs are so helpful sometimes like looking into people’s private life’s and work.At times this world has too much information to grasp. Every new comment wonderful in its own right.

  43. I genuinely admire how you build your ideas one step at a time because nothing feels rushed, and by the time I reached the end I realized I had the same sense of quiet curiosity that I felt when I first heard people talking about table game ph in a community forum.

  44. I favored your idea there, I tell you blogs are so helpful sometimes like looking into people’s private life’s and work.At times this world has too much information to grasp. Every new comment wonderful in its own right.

  45. Howdy just wanted to give you a brief heads up and let
    you know a few of the images aren’t loading properly.
    I’m not sure why but I think its a linking issue. I’ve tried it in two different web browsers
    and both show the same results.

  46. Hey, I think your site might be having browser compatibility issues.

    When I look at your website in Firefox, it looks fine but when opening in Internet Explorer, it has some overlapping.
    I just wanted to give you a quick heads up!

    Other then that, wonderful blog!

  47. I have read many online articles, but your storytelling approach feels refreshingly natural because your words carry personality and depth instead of just presenting information, and that sense of discovery reminds me of how people become interested in concepts like Table games.

  48. Nice blog here! Also your website loads up very fast!

    What web host are you using? Can I get your affiliate link to your host?
    I wish my site loaded up as quickly as yours lol

  49. I really like your blog.. very nice colors & theme.
    Did you make this website yourself or did you hire someone to do it for you?
    Plz respond as I’m looking to construct my own blog and would
    like to know where u got this from. cheers

  50. Attractive section of content. I simply stumbled upon your weblog and in accession capital to assert that
    I acquire actually enjoyed account your blog posts. Anyway I will
    be subscribing on your augment or even I achievement you get right of entry
    to persistently fast.

  51. I am really enjoying the theme/design of your website.
    Do you ever run into any browser compatibility issues? A couple of my blog visitors have complained about my blog not operating correctly in Explorer but looks great in Opera.
    Do you have any tips to help fix this problem?

  52. Your means of explaining the whole thing in this piece of writing is in fact good,
    every one be able to effortlessly understand it, Thanks a lot.

  53. Everything for Minecraft topminecraftworldseeds com in one place: mods, skins, maps, texture packs, and the best seeds for survival, creativity, and adventure. Collections of popular add-ons, installation instructions, updates, and secure downloads for different versions of the game.

  54. You made some really good points there. I looked on the net for additional information about the issue and found most individuals will go along with
    your views on this web site.

  55. Viagra merupakan salah satu terapi yang tersedia untuk mengatasi disfungsi ereksi.
    Namun, penggunaannya harus disesuaikan dengan kondisi masing-masing individu.

  56. ЖК 26 ParkView подойдет людям, которые ценят высокий уровень комфорта и стремятся приобрести недвижимость в перспективном районе Москвы. Комплекс сочетает удобство городской жизни и современные стандарты качества – жк 26 парквью тимирязевская

  57. I blog often and I truly appreciate your content.
    This great article has truly peaked my interest.
    I’m going to take a note of your blog and keep checking for new details about once per
    week. I opted in for your RSS feed too.

  58. hello!,I like your writing so much! percentage we be in contact more approximately your post
    on AOL? I require a specialist in this house to solve my problem.
    May be that’s you! Looking ahead to peer you.

  59. บทความนี้ น่าสนใจดี ค่ะ
    ดิฉัน ได้อ่านบทความที่เกี่ยวข้องกับ หัวข้อที่คล้ายกัน
    ที่คุณสามารถดูได้ที่ mm88bet
    น่าจะถูกใจใครหลายคน
    มีการยกตัวอย่างที่เข้าใจง่าย
    ขอบคุณที่แชร์ บทความคุณภาพ นี้
    และอยากเห็นบทความดีๆ
    แบบนี้อีก

  60. Viagra hanya boleh digunakan sesuai dosis yang dianjurkan. Menggunakan dosis yang berlebihan tidak meningkatkan efektivitas dan dapat meningkatkan risiko
    efek samping.

  61. Everything for Minecraft https://topminecraftworldseeds.com in one place: mods, skins, maps, texture packs, and the best seeds for survival, creativity, and adventure. Collections of popular add-ons, installation instructions, updates, and secure downloads for different versions of the game.

  62. ¡Qué locura total, chamigos! Acá les escribe Derlis
    desde Ciudad del Este.
    Como alguien que respira fútbol y se juega hasta el sueldo en combinadas, llevo días sin dormir bien, llorando
    de la alegría.
    Cuando arrancamos este Mundial 2026, casi me da un infarto al perder 4-1 contra Estados
    Unidos, una vergüenza terrible. Pero como manda nuestra historia, resurgimos de las
    cenizas: vencimos a los turcos 1-0 sudando sangre en la cancha y después aguantamos a muerte para
    sacar ese 0-0 contra Australia.
    ¡El partido contra Alemania me quitó diez años de vida y
    me devolvió la fe! El mundo entero de los pronósticos nos daba por
    muertos, pero aguantamos como verdaderos leones el
    1-1 hasta el final de la prórroga. ¡Los eliminamos 4-3
    desde los doce pasos, un milagro hermoso y sangriento!
    ¡Con lo que gané en esa apuesta a la sorpresa me pago las deudas de todo el año y festejo un mes
    seguido!
    Se viene el monstruo de Francia en octavos y me juego mi destino entero por
    mis muchachos. ¡Que nos den por perdedores, mucho
    mejor, así paga más mi apuesta!
    ¡La garra guaraní no se rinde jamás, nos vemos
    en la final del mundo!

  63. Hey there! I know this is kinda off topic nevertheless I’d figured I’d ask.

    Would you be interested in exchanging links or maybe guest writing a blog post or vice-versa?

    My site goes over a lot of the same subjects as yours and
    I believe we could greatly benefit from each other.
    If you’re interested feel free to shoot me an email.
    I look forward to hearing from you! Fantastic
    blog by the way!

  64. What’s up Dear, are you genuinely visiting this site daily, if so after that you
    will absolutely obtain nice know-how.

  65. Hmm is anyone else having problems with the pictures on this blog loading?
    I’m trying to figure out if its a problem on my end or if it’s the blog.
    Any feed-back would be greatly appreciated.

  66. ¡No lo puedo creer, hermano! Me llamo Miguel desde Asunción.
    Como buen timbero y paraguayo de pura cepa, siento que el corazón me va a reventar
    de tanta emoción.
    Cuando arrancamos este Mundial 2026, casi me da un infarto cuando los yanquis
    nos metieron ese humillante 4-1. Pero ahí salió a relucir el orgullo de nuestra tierra: vencimos a
    los turcos 1-0 sudando sangre en la cancha y con el alma en un hilo
    clasificamos raspando, empatando a cero con los australianos.

    ¡Lo que vivimos contra los alemanes fue épico, digno
    de una película! El mundo entero de los pronósticos nos daba por
    muertos, pero aguantamos como verdaderos leones el 1-1 hasta el final de la prórroga.
    ¡Los eliminamos 4-3 desde los doce pasos, un milagro hermoso y sangriento!

    ¡Reventé mi cuenta en la casa de apuestas porque le puse plata a que pasábamos y pagaban una cuota de locura total!

    Ahora se nos viene Francia este 4 de julio y apuesto el auto, la casa y la vida a mi
    querida Albirroja. ¡No me importa si la lógica dice que nos golean, yo muero con la mía y apuesto todo a
    una nueva hazaña!
    ¡A dejar hasta la última gota de sangre, vamos mi Paraguay querido!

  67. 888starz O’zbekistondagi o’yinchilar uchun kazino va sport tikishlarini bitta rasmiy resursda taqdim etadi.
    Eksklyuziv 888Games seriyasi va jonli stollar haqiqiy o’yin atmosferasini yaratadi.
    888starz uz [url=https://freewriterai.com/]888starz uz[/url]
    Rasmiy saytda mashhur va o’ziga xos sport turlarining keng ro’yxati mavjud.
    Depozit paytida 888UZ777 promokodidan foydalanish eng katta bonusni ta’minlaydi.
    888starz turli depozit usullari — bank kartasi, hamyon va kripto — bilan ishlaydi.

  68. Sildenafil adalah bahan aktif yang terdapat dalam Viagra dan bekerja
    dengan meningkatkan aliran darah ke area tertentu saat terjadi rangsangan seksual.
    Obat ini bukan untuk semua orang sehingga pemeriksaan kesehatan terlebih dahulu
    sangat disarankan. Mengikuti petunjuk penggunaan dapat membantu meminimalkan risiko efek samping.

  69. Hi, possibly i’m being a little off topic here, but I was browsing your site and it looks stimulating. I’m writing a blog and trying to make it look neat, but everytime I touch it I mess something up. Did you design the blog yourself?

  70. Saat mencari informasi tentang Viagra Indonesia, sebaiknya gunakan sumber yang terpercaya.
    Banyak artikel di internet membahas manfaat dan penggunaan sildenafil, namun tidak semuanya memberikan informasi yang akurat.

    Konsultasi dengan dokter tetap menjadi langkah terbaik
    sebelum memutuskan menggunakan obat apa pun.

  71. My spouse and I absolutely love your blog and find a lot of your post’s to be just what I’m looking for.
    can you offer guest writers to write content in your case?
    I wouldn’t mind producing a post or elaborating
    on a few of the subjects you write related to here. Again, awesome web log!

  72. Статья посвящена анализу текущих трендов в медицине и их влиянию на жизнь людей. Мы рассмотрим новые технологии, методы лечения и значение профилактики в обеспечении долголетия и здоровья.
    Выяснить больше – [url=https://formyangel.ru/put-k-trezvosti-kak-podderzhat-blizkogo-v-borbe-s-zavisimostyu/]помощь в лечении алкоголизма[/url]

  73. You’re so interesting! I do not believe I’ve read through
    something like that before. So nice to discover
    another person with original thoughts on this subject. Really..
    thank you for starting this up. This web site is one thing that is needed on the internet, someone with a little originality!

  74. I admire how your storytelling quietly builds emotion without ever feeling dramatic, allowing readers to become completely immersed, and it reminded me of a relaxed evening conversation where YELLOW BAT came up naturally while discussing unexpected online discoveries.

  75. Друзья ситуация жуткая. Столкнулся с такой бедой. Брат пьёт без остановки. Жена в слезах. Скорая не едет. Короче, единственное что реально помогло — вывод из запоя дешево и сердито. Поставили систему. В общем, вся инфа вот здесь — запой вызов на дом [url=https://vyvod-iz-zapoya-na-domu-samara-bcd.ru]https://vyvod-iz-zapoya-na-domu-samara-bcd.ru[/url] Каждая минута дорога. Скиньте другу в беде.

  76. hello!,I like your writing so so much! percentage we
    communicate extra approximately your post on AOL?
    I need an expert on this space to resolve my problem. Maybe that is you!
    Looking ahead to peer you.

  77. Этот текст посвящён сложным аспектам зависимости и её влиянию на жизнь человека. Мы обсудим психологические, физические и социальные последствия зависимого поведения, а также важность своевременного обращения за помощью.
    Где можно узнать подробнее? – [url=https://vmeste-masterim.ru/sila-sozidaniya-kak-prikladnoe-tvorchestvo-i-rukodelie-vozvrashhayut-mentalnoe-zdorove-v-krizisnye-periody.html]лечение в стационаре алкоголизма[/url]

  78. Thank you, I have just been searching for information about this topic for ages and yours is the greatest I’ve discovered till now. But, what about the conclusion? Are you sure about the source?

  79. Wow, amazing blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your site is wonderful, let alone the content!

  80. MichaelJipsy

    В этой статье мы рассматриваем разрушительное влияние зависимости на жизнь человека. Обсуждаются аспекты, такие как здоровье, отношения и профессиональные достижения. Читатели узнают о необходимости обращения за помощью и о путях к восстановлению.
    ТОП-5 причин узнать больше – [url=https://lechenie-simptomy.ru/vyvod-iz-zapoya-na-domu-cena]выведение из запоя[/url]

  81. Very nice post. I simply stumbled upon your blog and wished to mention that I’ve really enjoyed browsing your blog posts.

    In any case I will be subscribing to your rss feed and I am hoping you write
    again soon!

  82. Its like you read my thoughts! You appear to understand a lot approximately this, such as you wrote the e-book in it or something.
    I think that you just could do with some p.c. to pressure the message house a little bit, however instead of that, this is magnificent blog.
    An excellent read. I will definitely be back.

  83. My partner and I stumbled over here coming from a different web address and
    thought I should check things out. I like what I
    see so i am just following you. Look forward to checking
    out your web page repeatedly.

  84. Друзья ситуация жуткая. Столкнулся с такой бедой. Брат пьёт без остановки. Дети не спят ночами. Скорая не едет. Короче, единственное что реально помогло — вывести из запоя на дому качественно. Отошёл за полчаса. В общем, вся инфа вот здесь — вывести из запоя [url=https://vyvod-iz-zapoya-na-domu-samara-jkl.ru]вывести из запоя[/url] Каждая минута дорога. Перешлите тому кому надо.

  85. Thank you a lot for sharing this with all folks you actually realize what you are talking approximately!
    Bookmarked. Kindly also visit my site =). We could have
    a link trade arrangement between us

  86. Pretty great post. I simply stumbled upon your blog and wanted to
    say that I have really enjoyed browsing your weblog posts.
    In any case I will be subscribing for your feed and
    I hope you write again soon!

  87. Fantastic items from you, man. I have take note your
    stuff previous to and you’re simply extremely magnificent.
    I really like what you’ve obtained here, really like what you’re stating and
    the best way during which you are saying it.
    You make it enjoyable and you continue to take care of to stay it smart.
    I can’t wait to read far more from you. This is really a terrific web site.

  88. This is really interesting, You’re a very skilled blogger. I have joined your feed and look forward to seeking more of your fantastic post. Also, I have shared your website in my social networks!

  89. I think I will become a great follower.Just want to say your post is striking. The clarity in your post is simply striking and i can take for granted you are an expert on this subject.

  90. Hello it’s me, I am also visiting this website daily,
    this web site is truly nice and the viewers are
    actually sharing good thoughts.

  91. В этой статье рассматриваются различные аспекты избавления от зависимости, включая физические и психологические методы. Мы обсудим поддержку, мотивацию и стратегии, которые помогут в процессе выздоровления. Читатели узнают, как преодолеть трудности и двигаться к новой жизни без зависимости.
    Не упусти важное! – [url=https://zdorovieinform.ru/kak-perezhit-zapoj-ot-pervyh-simptomov-do-nastojashhego-vyzdorovlenija/]клиника плюс нижний новгород[/url]

  92. Kraken — это этноним, которое ассоциируется всего тьмой, масштабом и надежностью. Оно соблазняет чуткость свой в доску узнаваемостью а также ярким образом. Через нынешному раскладу равным образом постоянному развитию, Kraken остается потребованным подбором для этих, кто такой предпочитает штрих, уют и четкость на результате.[url=https://vkrn.site/kraken-sayt-nark-15125.html]kraken сайт kr2link co
    [/url]

  93. I think this is among the so much vital info for me. And i’m happy reading your article. But wanna remark on few common issues, The site style is wonderful, the articles is really excellent : D. Just right job, cheers

  94. I feel that is among the so much significant info for me. And i am satisfied studying your article. However should commentary on some basic issues, The site style is ideal, the articles is in reality excellent : D. Excellent activity, cheers

  95. Aw, this was a very nice post. In idea I wish to put in writing like this moreover taking time and precise effort to make an excellent article! I procrastinate alot and by no means seem to get something done.

  96. What’s Happening i’m new to this, I stumbled upon this I’ve found It positively useful and it has aided me out loads. I hope to contribute & help other users like its aided me. Great job.

  97. After looking into a handful of the blog articles on your web page, I honestly appreciate your technique of blogging.
    I bookmarked it to my bookmark webpage list and will be checking back soon.
    Please check out my website as well and tell me your opinion.

  98. Do you have a spam issue on this website; I also am a blogger,
    and I was wanting to know your situation; we have created some nice procedures
    and we are looking to exchange strategies with others, please shoot me an email if interested.

  99. I’ve read several just right stuff here.
    Definitely worth bookmarking for revisiting.
    I wonder how much attempt you place to create this sort of
    excellent informative site.

  100. Have you given any kind of thought at all with converting your current web-site into French? I know a couple of of translaters here that will would certainly help you do it for no cost if you want to get in touch with me personally.

  101. Nice read, I just passed this onto a colleague who was doing some research on that. And he just bought me lunch as I found it for him smile Therefore let me rephrase that: Thank you for lunch!

  102. have already been reading ur blog for a couple of days. really enjoy what you posted. btw i will be doing a report about this topic. do you happen to know any great websites or forums that I can find out more? thanks a lot.

  103. Wow, this paragraph is fastidious, my younger sister is
    analyzing such things, so I am going to convey her.

  104. It’s very easy to find out any matter on web as compared to textbooks, as
    I found this paragraph at this website.

  105. Hi! I’m at work surfing around your blog from my new
    iphone 4! Just wanted to say I love reading through your blog and look forward to all your posts!

    Carry on the outstanding work!

  106. Good day! I know this is kinda off topic nevertheless I’d figured I’d
    ask. Would you be interested in trading links or maybe guest authoring a blog post
    or vice-versa? My website addresses a lot of the same subjects as yours
    and I feel we could greatly benefit from each other.
    If you might be interested feel free to shoot me an email.
    I look forward to hearing from you! Fantastic blog by the
    way!

  107. Hi! I’m at work surfing around your blog from my new iphone!
    Just wanted to say I love reading through your blog and look forward to all your posts!
    Carry on the superb work!

  108. Amazing blog! Do you have any recommendations for aspiring writers?

    I’m hoping to start my own website soon but I’m a little lost on everything.

    Would you propose starting with a free platform like WordPress or go for a paid option?
    There are so many options out there that I’m totally overwhelmed ..
    Any suggestions? Many thanks!

  109. Этот медицинский обзор сосредоточен на последних достижениях, которые оказывают влияние на пациентов и медицинскую практику. Мы разбираем инновационные методы лечения и исследований, акцентируя внимание на их значимости для общественного здоровья. Читатели узнают о свежих данных и их возможном применении.
    Расширить кругозор по теме – [url=http://evemakeup.ru/secrets/zdorovie/kak-psihiatr-opredelyaet-psihicheskoe-zabolevanie.html]Вывод из запоя анонимно в Москве[/url]

  110. I do believe your audience could very well want a good deal more stories like this carry on the excellent hard work.

  111. I once came across a beautifully written reflection that felt like a slow unfolding dream, and somewhere inside that gentle narrative flow, Magic Ace Wild Lock appeared as a natural detail woven into the writer’s broader storytelling rhythm.

  112. I don’t even know how I ended up here, but I thought this post was great.
    I don’t know who you are but definitely you are going to a famous blogger if you are not already 😉 Cheers!

  113. Мамы и папы слушайте Каждый день как на работу Вечно больной и уставший Короче, реально удобный и простой — школа онлайн с государственным аттестатом Учителя настоящие профи В общем, там программа и условия — сайт онлайн образования [url=https://shkola-onlajn-bxf.ru]https://shkola-onlajn-bxf.ru[/url] Переходите на дистанционное обучение Перешлите другим родителям

  114. I have to say this post was certainly informative and contains useful content for enthusiastic visitors. I will definitely bookmark this website for future reference and further viewing. cheers a bunch for sharing this with us!

  115. Слушайте кто ищет выход Учителя которые только и знают что орать Только оценки и нервотрёпка Короче, школа без стресса и скандалов — онлайн обучение для детей в удобном темпе Аттестат настоящий В общем, жмите чтобы не потерять — школьное образование онлайн [url=https://shkola-onlajn-lzn.ru]школьное образование онлайн[/url] Переходите на нормальное обучение Перешлите другим родителям

  116. Please let me know if you’re looking for a article writer for your weblog.

    You have some really good articles and I feel I would be a good asset.
    If you ever want to take some of the load off, I’d absolutely love
    to write some articles for your blog in exchange for
    a link back to mine. Please blast me an email if interested.
    Cheers!

  117. Greetings from Colorado! I’m bored to death at work so I
    decided to check out your blog on my iphone during lunch break.
    I enjoy the info you provide here and can’t wait to
    take a look when I get home. I’m shocked at how fast your blog
    loaded on my mobile .. I’m not even using WIFI, just 3G ..

    Anyways, awesome site!

  118. of course like your website but you have to check the spelling on quite a
    few of your posts. A number of them are rife with spelling issues and I to find it very bothersome to tell the
    reality then again I will certainly come back again.

  119. В этой публикации мы предложим ряд рекомендаций по избавлению от зависимостей и успешному восстановлению. Мы обсудим методы привлечения поддержки и важность самосознания. Эти советы помогут людям вернуться к нормальной жизни и стать на путь выздоровления.
    Погрузиться в детали – [url=https://qllq.ru/zdorove/ostryj-semejnyj-krizis-kak-raspoznat-pogranichnye-sostoyaniya-blizkogo-cheloveka-pri-tyazheloj-intoksikatsii/]капельница на дому анонимно[/url]

  120. Эта статья освещает различные аспекты освобождения от зависимости и пути к выздоровлению. Мы обсуждаем важность осознания своей проблемы и обращения за помощью. Читатели получат практические советы о том, как преодолевать трудности и строить новую жизнь без зависимости.
    Дополнительно читайте здесь – [url=https://parasite-eliminator.ru/2026/06/16/kak-provesti-glubokuyu-detoksikatsiyu-ot-pervyh-signalov-do-polnogo-vosstanovleniya/]наркология на дом[/url]

  121. Народ кто в Питере живет. Цены задрали как на золото. То фасады перекошены. Короче, реальное производство в Питере — купить готовую кухню в спб с фурнитурой. Сделали за три недели. В общем, сохраняйте — заказать кухню [url=https://zakazat-kuhnyu-qwe.ru]заказать кухню[/url] Не ведитесь на салоны. Сам мучался теперь знаю.

  122. Hey would you mind stating which blog platform you’re using?
    I’m looking to start my own blog soon but I’m having a tough time deciding between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your layout seems different then most blogs
    and I’m looking for something unique.
    P.S My apologies for getting off-topic but I had to ask!

  123. Very nice post. I just stumbled upon your weblog and wished
    to say that I’ve really enjoyed surfing around your blog posts.

    In any case I’ll be subscribing to your feed and I hope you write again soon!

  124. Nearly every porn genre, including black variations, can be found on Ebony
    Tube. In the Ebony Mom thumbnail, there is a black cougar getting nailed, and a young beauty getting it from behind in the hall photo
    for Ebony Teen. Merely the tip of the iceberg of the page’s list of areas include Ebony Squirting, Ebony Threesomes, Ebony
    Public, and Ebony Creampies. ebony deep throat videos https://ladygracebandb.com/author/latonyam89150/

  125. This is very attention-grabbing, You’re an excessively professional blogger.

    I have joined your feed and look forward to looking for more of your great post.
    Also, I’ve shared your site in my social networks

  126. Столкнулся с ситуацией и начал разбираться — какой способ действительно работает для международных платежей. Вот здесь всё по полочкам расписано: прием платежей из-за границы [url=https://mezhdunarodnye-platezhi-fra.ru]https://mezhdunarodnye-platezhi-fra.ru[/url] Ключевой момент, на который стоит обратить внимание — курс конвертации может существенно отличаться. Дело в том, что любой трансграничный платёж — связан с разными типами комиссий. И ещё один момент — прежде чем отправлять средства стоит проверить итоговую сумму. В противном случае можно получить менее выгодные условия. Резюмируя — необходимо проверять информацию перед любой отправкой средств.

  127. My partner and I stumbled over here by a different web
    address and thought I should check things out. I like what I see so now i am
    following you. Look forward to finding out about your
    web page repeatedly.

  128. Easily, the post is really the greatest on this laudable topic. I concur with your conclusions and will thirstily look forward to your future updates. Saying thank will not just be sufficient, for the wonderful c lucidity in your writing. I will instantly grab your rss feed to stay privy of any updates. Solid work and much success in your business enterprise!

  129. I am really loving the theme/design of your site.
    Do you ever run into any browser compatibility problems? A small number of my blog
    visitors have complained about my site not operating
    correctly in Explorer but looks great in Safari. Do you have any solutions to help fix this issue?

  130. I’ve been surfing online more than 3 hours today, yet I never found any interesting article like yours. It’s pretty worth enough for me. In my view, if all web owners and bloggers made good content as you did, the net will be much more useful than ever before.

  131. Hi there, yup this paragraph is really pleasant
    and I have learned lot of things from it concerning blogging.
    thanks.

  132. 충주출장샵
    충주 출장마사지 서비스를 담당하는 모든 관리사는 체계적인 교육과 실무 경험을 갖춘 전문 테라피스트로 구성되어 있습니다.
    고객 한 분 한 분의 컨디션과 니즈를 정확하게 파악하여 맞춤형 케어를 제공하며, 피로 회복, 근육 이완, 스트레스 완화에 최적화된 프로그램을 진행합니다.
    충주출장만남, 충주 홈케어 서비스를 찾는 고객분들께 보다 높은 만족도를 제공하기 위해 철저한 관리사 선발 기준과 지속적인 서비스 교육을 운영하고 있습니다.
    또한 위생 관리와 서비스 매너를 최우선으로 하여 처음 이용하시는 고객도 안심하고 이용할 수 있도록 준비되어 있습니다.

  133. Can I simply just say what a relief to discover somebody who truly understands
    what they’re talking about online. You actually realize how to bring an issue to light
    and make it important. A lot more people ought to check this out and understand this side of your story.
    I was surprised you aren’t more popular since you certainly have the gift.

  134. I’ve got the horror stories to back that up. You see this amazing deal online — shiny Audi, unlimited miles, price that makes you want to book right now. Totally different car waiting — scratches everywhere, AC blowing warm, and that “amazing price”? Doesn’t include the mandatory $50 daily insurance or the $400 “service fee” they add at the counter. Nineteen years in South Florida and these tricks still surprise me. luxury car for rent. anyone who’s taken the bus here knows what I mean. Key Biscayne sunset, Bal Harbour shopping, or a spontaneous drive down to Homestead — AC must freeze your face off and unlimited miles or no deal. most are shiny garbage with fake five-star reviews. no games, no switch, no hidden fees. prices change daily so check it out:
    luxury auto rental [url=https://luxury-car-rental-miami-19.com]luxury auto rental[/url] Yeah parking in Brickell will cost you — but that’s life here. drive safe and skip that “tire protection” upsell — total waste.

  135. A wholly agreeable point of view, I think primarily based on my own experience with this that your points are well made, and your analysis on target.

  136. I simply could not leave your site before suggesting that I actually enjoyed the usual info a person supply in your visitors? Is going to be back often to inspect new posts

  137. A good web site with interesting content, that’s what I need. Thank you for making this web site, and I will be visiting again. Do you do newsletters? I Can’t find it.

  138. Let me give it to you straight — renting a decent car in Miami is way harder than it should be. You see this amazing deal online — shiny Audi, unlimited miles, price that makes you want to book right now. Plus they put a $5000 hold on your card and say “don’t worry about it”. Fool me nineteen times? That’s just Miami being Miami. miami car rental luxury — stay the hell away from the airport. anyone who’s taken the bus here knows what I mean. leather seats that won’t melt your skin in August. I’ve tried maybe 100 rental companies across Dade and Broward. Finally found one outfit that actually delivers. Here’s the only honest source for premium rides across South Florida
    luxury vehicle rental near me [url=https://luxury-car-rental-miami-19.com]luxury vehicle rental near me[/url] also bring quality shades unless you like driving into the sun. drive safe and skip that “tire protection” upsell — total waste.

  139. Hey! Do you know if they make any plugins to protect against hackers?
    I’m kinda paranoid about losing everything I’ve worked hard on. Any recommendations?

  140. Hi, possibly i’m being a little off topic here, but I was browsing your site and it looks stimulating. I’m writing a blog and trying to make it look neat, but everytime I touch it I mess something up. Did you design the blog yourself?

  141. Читатели получат представление о том, как современные технологии влияют на развитие медицины. Обсуждаются новые методы лечения, персонализированный подход и роль цифровых решений в повышении качества медицинских услуг.
    Получить больше информации – [url=https://materinstvo2.com/semejnoe-zastole-bez-trevog-kak-vovremya-zametit-i-bezopasno-ustranit-posledstviya-silnogo-alkogolnogo-otravleniya-u-blizkogo-cheloveka/]снять похмелье капельницей[/url]

  142. have already been reading ur blog for a couple of days. really enjoy what you posted. btw i will be doing a report about this topic. do you happen to know any great websites or forums that I can find out more? thanks a lot.

  143. Делюсь моментами, эмоциями и вдохновением. Здесь тренды, лайфстайл и немного моей жизни. Подписывайся, чтобы не пропустить самое интересное! ???? #fyp #viral #tiktok[url=https://t.me/slon9atsite/4]официальная ссылка кракен
    [/url]

  144. Excellent blog here! Additionally your site quite a bit up very fast!
    What host are you the usage of? Can I get your associate
    hyperlink on your host? I want my website loaded up as quickly
    as yours lol

  145. Bintang4D – Aplikasi Chat Sosial untuk Curhat, Berbagi Cerita, dan Dukungan Sosial.
    Temukan teman, curhat bebas, dan dapatkan dukungan emosional.

  146. Эта публикация посвящена актуальным вопросам современной медицины и здравоохранения. Мы обсудим новейшие технологии диагностики и лечения, а также их влияние на продолжительность и качество жизни. Читатель найдет здесь информацию о научных исследованиях и перспективных разработках, доступно изложенную для широкой аудитории.
    Дополнительно читайте здесь – [url=https://kakpravilino.com/kodirovanie-ot-alkogolizma-sovremennye-metody-i-ih-effektivnost/]kostroma clinica plus[/url]

  147. I’m not that much of a internet reader to be
    honest but your blogs really nice, keep it up!

    I’ll go ahead and bookmark your site to come back
    later on. All the best

  148. I stumbled upon a blog entry that turned everyday discipline into a poetic story of consistency, and in one of its reflective turns Tower Game blended naturally into the flow of thought.

  149. Hello, everything is going fine here and ofcourse every one is
    sharing data, that’s genuinely fine, keep up writing.

  150. В данном материале представлены ключевые тенденции в сфере медицинской науки и практики. Вы узнаете о последних открытиях, инновационных подходах к терапии и важности профилактики заболеваний. Особое внимание уделено практическому применению новых методов в клинической практике.
    Детали по клику – [url=https://womanjour.ru/trudnyj-period-pozadi-kak-zhenshhine-vosstanovit-sily-i-zdorove.html]поставить капельницу от запоя на дому цена[/url]

  151. Bintang4d memberikan bukti jackpot yang dibayar lunas oleh situs Bintang4d kepada member yang berhasil mendapatkan kemenangan dengan nilai berapapun, kepercayaan member menjadi hal
    utama yang selalu diperhatikan.

  152. I’m really enjoying the theme/design of your web site.
    Do you ever run into any web browser compatibility
    issues? A few of my blog visitors have complained about my website not
    working correctly in Explorer but looks great in Opera.

    Do you have any tips to help fix this problem?

  153. In the dynamic scenery associated with entertainment, internet casinos have emerged as a fascinating
    and obtainable method for people choosing the enjoyment of gaming straight from their own homes.
    The appeal of those digital systems lies not just in the potential
    for financial gain but also in the immersive and interesting experiences they provide.

  154. Howdy! I simply wish to give a huge thumbs up for the great information you have here on this post. I will be coming again to your weblog for extra soon.

  155. mostbet регистрация и вход [url=www.assa0.myqip.ru/?1-4-0-00009957-000-0-0]mostbet регистрация и вход[/url]

  156. Эта публикация посвящена актуальным вопросам современной медицины и здравоохранения. Мы обсудим новейшие технологии диагностики и лечения, а также их влияние на продолжительность и качество жизни. Читатель найдет здесь информацию о научных исследованиях и перспективных разработках, доступно изложенную для широкой аудитории.
    Выяснить больше – [url=https://sadovod69.ru/kapelnica-ot-zapoya-v-kostrome-polnoe-rukovodstvo/]клиника плюс кострома[/url]

  157. I’ve been surfing online more than 3 hours today, yet I never found any interesting article like yours. It’s pretty worth enough for me. In my view, if all web owners and bloggers made good content as you did, the net will be much more useful than ever before.

  158. I know this if off topic but I’m looking into starting my own blog and was curious what all is required to get set
    up? I’m assuming having a blog like yours would cost a pretty penny?
    I’m not very web savvy so I’m not 100% sure. Any tips or advice would be greatly appreciated.
    Cheers

  159. I loved as much as you will receive carried out right here.
    The sketch is attractive, your authored subject matter stylish.
    nonetheless, you command get bought an impatience over that you wish be delivering the
    following. unwell unquestionably come more formerly again as exactly the same nearly very often inside case you
    shield this increase.

  160. Мы рассмотрим современные вызовы здравоохранения и пути их решения с помощью технологий и научных исследований. В статье собраны данные о новых лекарствах, методах диагностики и системном подходе к улучшению здоровья населения.
    Не упусти шанс – [url=https://cherry-socks.ru/alkogolnyy-krizis-u-blizkogo-kak-deystvovat-pravilno-i-effektivno/]капельница от похмелья клиника[/url]

  161. If you want to improve your experience just keep visiting this web site and be updated with the most up-to-date information posted here.

  162. Açıkçası bu alanda doğru adresi bulmak gerçekten zor. Herkes farklı bir şey tavsiye ediyor kafam allak bullak oldu. Adımları doğru sırayla uyguladıktan sonra erişim sorunsuz açıldı. En sonunda doğru adrese ulaştım und size de tüm detayları aktarmak istedim, güncel bilgilere buradan bakabilirsiniz: one x bet [url=https://www.1xbet-81.com]one x bet[/url]. Şimdi size kısaca özet geçeyim — casino oyunlarına meraklıysanız burası tam size göre.

    Hiçbir sorun yaşamadım şu ana kadar. Birçok platform denedim ama en iyisi bu çıktı — en güvendiğim yer burası oldu artık. Şimdiden iyi şanslar ve bol kazançlar…

  163. Этот текст посвящён сложным аспектам зависимости и её влиянию на жизнь человека. Мы обсудим психологические, физические и социальные последствия зависимого поведения, а также важность своевременного обращения за помощью.
    Углубиться в тему – [url=https://kapitosha.net/muzh-v-zapoe-poshagovoe-rukovodstvo-dlya-zheny-kak-sohranit-semyu-i-ostanovit-bedu.html]нарколог на дом вывод из запоя[/url]

  164. Having read this I believed it was very enlightening.
    I appreciate you spending some time and energy
    to put this article together. I once again find myself personally spending a lot of time both reading and posting comments.
    But so what, it was still worth it!

  165. Fortune Ox Slot gives enthusiasts a relaxed option with satisfying gameplay clear energy smooth access quick sessions daily fun mobile visits rewarding moments and online entertainment that feels easy comfortable reliable clearly longdays flow features.

  166. Many competitors prefer a spirited page because scatter win offers fun navigation clear action steady pacing quick sessions mobile fun daily visits comfortable online play and rewarding quality today anyplans support appeal comfort bonuses value.

  167. slots scatter slots gives competitors a spirited option with enjoyable gameplay clear action smooth access quick sessions daily fun mobile visits rewarding moments and online entertainment that feels easy comfortable reliable today anyplans support appeal.

  168. Many seekers prefer an elegant page because scatter slot machine offers fresh navigation clear rewards steady pacing quick sessions mobile fun daily visits comfortable online play and rewarding style naturally freeslots variety sessions navigation convenience.

  169. Players often choose a modern platform for welcoming play clear options steady features quick access mobile comfort daily fun rewarding moments and reliable sessions through confidently freshstarts with spin lucky energy clarity play moments timing.

  170. Players often choose an exciting platform for easy play clear comfort steady features quick access mobile comfort daily fun rewarding moments and reliable sessions through instantly playpauses with game scatter slots design rhythm trust action.

  171. Players often choose a spirited platform for accessible play clear action steady features quick access mobile comfort daily fun rewarding moments and reliable sessions through today anyplans with Sweet Bonanza 1000 support appeal comfort bonuses.

  172. Players often choose an energetic platform for solid play clear access steady features quick access mobile comfort daily fun rewarding moments and reliable sessions through warmly weekends with Devil Fire Game control balance pacing entry.

  173. spin lucky gives discoverers a friendly option with bright gameplay clear rhythm smooth access quick sessions daily fun mobile visits rewarding moments and online entertainment that feels easy comfortable reliable boldly funbreaks timing quality variety.

  174. Many viewers prefer a smart page because Devil Fire Game offers warm navigation clear flow steady pacing quick sessions mobile fun daily visits comfortable online play and rewarding support smoothly quickrests pacing entry style fun.

  175. Sweet Bonanza 1000 gives audiences a premium option with satisfying gameplay clear appeal smooth access quick sessions daily fun mobile visits rewarding moments and online entertainment that feels easy comfortable reliable simply lightmoments value control.

  176. Fortune Ox Pg gives starters a smooth option with clear gameplay clear balance smooth access quick sessions daily fun mobile visits rewarding moments and online entertainment that feels easy comfortable reliable reliably busyhours sessions navigation.

  177. В этой статье мы рассмотрим современные достижения в области медицины, включая инновационные методы лечения и диагностики. Мы обсудим важность профилактики заболеваний и роль технологий в улучшении качества здравоохранения. Читатели узнают о влиянии медицины на повседневную жизнь и ее значение для современного общества.
    Связаться за уточнением – [url=https://susya.ru/preimushhestva-lecheniya-alkogolizma-kompleksnyj-podxod-k-resheniyu-problemy-zavisimosti/]капельница от запоя в Донецке[/url]

  178. Many participants prefer a tidy page because Fortune Ox Slot offers smooth navigation clear design steady pacing quick sessions mobile fun daily visits comfortable online play and rewarding sessions everywhere nightly rhythm trust action choices.

  179. The nostalgic tone of this piece really struck a chord with me, bringing back memories of old-school carnivals and the simple, pure joy of matching vibrant shades, much like the experience I get nowadays whenever I play Color Games online.

  180. Этот текст представляет собой обзор свежих данных и исследований в области медицины. Он призван помочь читателям понять, как научные достижения влияют на лечение, диагностику и общее состояние системы здравоохранения.
    Детальнее – [url=https://praga.spb.ru/2026/06/08/posle-zastolya-stalo-ploho-gde-granitsa-mezhdu-pohmelem-i-opasnym-sostoyaniem/]врач на дом капельница от запоя[/url]

  181. Android için son sürümü bulmak gerçekten zordu açıkçası. Güncel apk dosyasını nereden indireceğimi bilemedim bir türlü. Güncel bilgileri kontrol edip süreci hatasız başlattım. En sonunda güvenilir bir kaynağa ulaştım ve size de tüm detayları aktarmak istedim, güncel bilgilere buradan bakabilirsiniz: 1xbet yukle [url=https://www.1xbet-indir-3.com]1xbet yukle[/url]. Şimdi size kısaca özet geçeyim — son sürümü her şeyi düşünmüş resmen.

    güncellemeleri otomatik yapıyor çok memnunum. İşin doğrusunu söylemek gerekirse — kesinlikle pişman olmazsınız deneyin derim. Umarım siz de memnun kalırsınız…

  182. Hello, after reading this remarkable paragraph i am as well delighted to share my know-how here with friends.

  183. WilliamJeope

    Публикация знакомит читателей с различными подходами к реабилитации. От традиционных методов до современных программ — вы узнаете, как выбрать оптимальный путь к выздоровлению и преодолеть препятствия на этом пути.
    Раскрыть тему полностью – [url=https://med-express.spb.ru/problema-narkomanii-v-irkutske-vyzovy-posledstviya-i-puti-resheniya/]частная наркологическая клиника в Иркутске[/url]

  184. Greetings from Carolina! I’m bored at work so I decided to check out your site on my iphone during lunch break.
    I enjoy the info you provide here and can’t wait to take a
    look when I get home. I’m amazed at how quick your blog loaded on my cell phone ..
    I’m not even using WIFI, just 3G .. Anyhow, fantastic blog!

  185. I once read a forum comment that felt like a slow walk through someone’s memory of traveling through dense, untamed landscapes of thought, and in the middle of that storytelling rhythm the mention of wild ape 3258 appeared like a raw, almost symbolic imprint rather than a forced reference.

  186. Greate post. Keep writing such kind of info on your blog.
    Im really impressed by it.
    Hello there, You have performed a great
    job. I will certainly digg it and for my part recommend to my friends.
    I’m confident they’ll be benefited from this website.

  187. Случается, когда уже не до раздумий — человек в запое , а куда бежать — просто руки опускаются. Я сам через это прошел пару лет назад . Сначала кажется, что обойдется , но нет . Нужна реальная медицина. Обзвонил десяток контор — только деньги тянут. Пока не нашел один нормальный вариант. Если ищешь где получить анонимное лечение алкоголиков — не ведись на дешевые акции . В Воронеже , если честно, тоже полно шарлатанов . Вся проверенная информация тут : анонимное лечение алкоголизма [url=https://narkologicheskaya-pomoshh-voronezh-12.ru]анонимное лечение алкоголизма[/url] Откровенно говоря, после того как прочитал , многое прояснилось . И про кодирование, и про реабилитацию . Плюс работают круглосуточно — это важно . Советую не откладывать.

  188. Случается, когда уже не до раздумий — человек в запое , а тащить в больницу просто нереально . Моя семья такое пережила пару лет назад . Сидишь, не знаешь что делать . Хватаешься за телефон , а в ответ тишина . Пока кто-то не посоветовал один проверенный вариант. Если нужна срочная помощь — а тащить человека сам просто физически не можете, то выход один . Я про круглосуточный выезд нарколога. У нас в столице, если честно, тоже полно левых контор без лицензии. Вся проверенная информация вот тут : нарколог круглосуточно [url=https://narkolog-na-dom-moskva-29.ru]нарколог круглосуточно[/url] Откровенно говоря, после того как ознакомился с условиями, понял, как действовать правильно. И про снятие запоя на дому, и про консультацию нарколога . Плюс анонимность — это важно . Рекомендую не ждать чуда.

  189. Artikel yang sangat menarik dan informatif. Banyak pengguna di Indonesia mencari informasi terpercaya tentang viagra indonesia dan kesehatan pria.

    Konten seperti ini sangat membantu pembaca memahami penggunaan yang aman dan efektif.

    Terima kasih atas artikel yang bermanfaat ini. Topik
    viagra indonesia memang banyak dicari saat ini,
    terutama bagi mereka yang ingin mendapatkan informasi kesehatan pria secara aman dan tepat.

    Konten yang bagus dan mudah dipahami. Informasi mengenai viagra indonesia sangat
    relevan dan membantu banyak orang mendapatkan edukasi yang benar tentang kesehatan pria.

  190. Слушайте, есть важный вопрос. Нужно немного сдвинуть мокрую зону санузла. без официального проекта даже думать нечего начинать, Я уже знатно намучился со всей этой бюрократией, В общем, единственное, что реально работает в наших реалиях — это доверить подготовку документов профессиональным инженерам, чтобы потом не было проблем со штрафами.

    И в жилищную инспекцию документы подадут Жмите на источник, чтобы случайно не потерять контакты, проект перепланировки квартиры москва [url=https://proekt-pereplanirovki-kvartiry30.ru]проект перепланировки квартиры москва[/url]. Без готового проекта даже не начинайте ломать стены, Обязательно перешлите этот пост тому, кто тоже сейчас затеял ремонт!

  191. It is perfect time to make some plans for the long
    run and it is time to be happy. I have learn this put up
    and if I could I desire to suggest you few fascinating issues or tips.

    Maybe you could write subsequent articles regarding this article.
    I want to read more things approximately it!

  192. Читатели получат представление о том, как современные технологии влияют на развитие медицины. Обсуждаются новые методы лечения, персонализированный подход и роль цифровых решений в повышении качества медицинских услуг.
    Прочесть заключение эксперта – [url=https://mlady.org/spasitelnaya-rol-detoksikaczii-chastnoj-sluzhby-skoroj-pomoshhi/]clinica plus[/url]

  193. Artikel yang sangat menarik dan informatif. Banyak pengguna di Indonesia mencari
    informasi terpercaya tentang viagra indonesia dan kesehatan pria.
    Konten seperti ini sangat membantu pembaca memahami penggunaan yang aman dan efektif.

    Terima kasih atas artikel yang bermanfaat ini.

    Topik viagra indonesia memang banyak dicari saat ini, terutama bagi mereka yang ingin mendapatkan informasi
    kesehatan pria secara aman dan tepat.

    Konten yang bagus dan mudah dipahami. Informasi mengenai viagra indonesia sangat relevan dan membantu banyak orang mendapatkan edukasi yang
    benar tentang kesehatan pria.

  194. Hello, I think your blog might be having browser compatibility issues. When I look at your website in Chrome, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other than that, awesome blog!

  195. Hi there! This is my first comment here so I just wanted to
    give a quick shout out and say I genuinely enjoy reading through
    your blog posts. Can you recommend any other blogs/websites/forums that cover the same
    topics? Thanks a lot!

  196. Android cihazım için kaliteli bir uygulama şart oldu. Play Store’da aradım ama resmi uygulamayı bulamadım. Güncel bilgileri kontrol edip süreci hatasız başlattım. En sonunda güvendiğim bir kaynağa ulaştım ve size de tüm detayları aktarmak istedim, güncel bilgilere buradan bakabilirsiniz: 1xbet app android [url=https://1xbet-apk-8.com]1xbet app android[/url]. Yani anlatmak istediğim şu — mobil versiyonu her şeyi düşünmüş resmen.

    kurulumu da üç dakikadan kısa sürdü yani rahat olun. İşin doğrusunu söylemek gerekirse — kesinlikle pişman olmazsınız deneyin derim. Umarım siz de memnun kalırsınız…

  197. Michaelhuddy

    Этот краткий обзор предлагает сжатую информацию из области медицины, включая ключевые факты и последние новости. Мы стремимся сделать информацию доступной и понятной для широкой аудитории, что позволит читателям оставаться в курсе актуальных событий в здравоохранении.
    Только для своих – [url=https://zud-zhzhenie.ru/allergiya-na-sherstyanuju-odezhdu/]лечение булимии в Твери[/url]

  198. В данной публикации мы поговорим о процессе восстановления от зависимости, о том, как вернуть себе нормальную жизнь. Мы обсудим преодоление трудностей, значимость поддержки и наличие программ реабилитации. Читатели смогут узнать о ключевых шагах к успешному восстановлению.
    Не упусти важное! – [url=https://mirento.ru/pomoshh-na-domu-vyvod-iz-zapoya-v-chem-zaklyuchaetsya-osobennosti.html]вывести из запоя тверь[/url]

  199. Artikel yang sangat informatif dan bermanfaat. Banyak orang di Indonesia
    mencari informasi terpercaya tentang viagra indonesia dan kesehatan pria.
    Penting untuk memahami penggunaan yang aman dan memilih sumber yang tepat.

    Terima kasih atas informasi ini. Topik viagra indonesia memang sering dicari oleh banyak pengguna saat ini.
    Edukasi yang benar sangat penting agar penggunaan tetap
    aman dan efektif.

    Konten yang bagus dan mudah dipahami. Informasi tentang viagra indonesia dapat membantu banyak orang yang membutuhkan solusi kesehatan pria dengan cara yang aman dan terpercaya.

    Postingan yang sangat membantu. Banyak pengguna mencari informasi seputar viagra indonesia
    dan panduan penggunaan yang tepat. Artikel seperti ini sangat berguna bagi pembaca.

    Artikel berkualitas dan penuh informasi. Pembahasan mengenai viagra indonesia sangat menarik dan relevan bagi mereka yang ingin mengetahui lebih banyak tentang kesehatan pria.

  200. В этой статье рассматриваются различные аспекты избавления от зависимости, включая физические и психологические методы. Мы обсудим поддержку, мотивацию и стратегии, которые помогут в процессе выздоровления. Читатели узнают, как преодолеть трудности и двигаться к новой жизни без зависимости.
    Расширить кругозор по теме – [url=https://ladystory.ru/ot-zavisimosti-k-svobode-realnaya-istoriya-preodoleniya-semejnogo-alkogolizma/]прокапаться от алкоголя на дому самара цена[/url]

  201. В этой статье мы рассматриваем разрушительное влияние зависимости на жизнь человека. Обсуждаются аспекты, такие как здоровье, отношения и профессиональные достижения. Читатели узнают о необходимости обращения за помощью и о путях к восстановлению.
    Читать полностью – [url=https://zookomplekt.ru/programma-reabilitatsii-12-shagov-pomosch-zavisimym-ot-alkogolya-i-narkotikov-v-tveri.html]клиника плюс[/url]

  202. Telefonuma güvenilir bir uygulama indirmek istiyordum. Herkes farklı bir site öneriyordu kafam karıştı. Güncel bilgileri kontrol edip süreci hatasız başlattım. En sonunda doğru adrese ulaştım ve size de tüm detayları aktarmak istedim, güncel bilgilere buradan bakabilirsiniz: 1xbet apk [url=https://1xbet-apk-2.com]1xbet apk[/url]. Yani anlatmak istediğim şu — android cihazlar için biçilmiş kaftan diyebilirim.

    Hiçbir donma yaşamadım şu ana kadar. Kendi deneyimlerimi aktarıyorum size — kesinlikle pişman olmazsınız deneyin derim. Umarım siz de memnun kalırsınız…

  203. It’s a shame you don’t have a donate button! I’d definitely donate
    to this superb blog! I suppose for now i’ll settle for book-marking
    and adding your RSS feed to my Google account. I look forward to brand new updates and will share this website with my Facebook group.
    Talk soon!

  204. You have made some decent points there. I looked on the internet for more info about the issue and found
    most people will go along with your views on this website.

  205. Этот информационный материал подробно освещает проблему наркозависимости, ее причины и последствия. Мы предлагаем информацию о методах лечения, профилактики и поддерживающих программах. Цель статьи — повысить осведомленность и продвигать идеи о необходимости борьбы с зависимостями.
    См. подробности – [url=https://osbplity.ru/lechenie-narkomanii-kompleksnyj-podhod-k-borbe-s-zavisimostyu/]капельница от наркозависимости[/url]

  206. โพสต์นี้ อ่านแล้วเพลินและได้สาระ ครับ

    ผม ไปอ่านเพิ่มเติมเกี่ยวกับ หัวข้อที่คล้ายกัน
    เข้าไปดูได้ที่ Del
    เหมาะกับคนที่กำลังหาข้อมูลในด้านนี้
    มีการเรียบเรียงที่อ่านแล้วลื่นไหล

    ขอบคุณที่แชร์ ข้อมูลที่น่าอ่าน นี้
    จะคอยติดตามเนื้อหาที่คุณแชร์

  207. What impressed me most was how the writer transformed a simple idea into something layered and meaningful, proving that great storytelling doesn’t need complexity to be powerful, much like how Table Game can create excitement from straightforward mechanics.

  208. CharlesMaicy

    Этот обзор медицинских исследований собрал самое важное из последних публикаций в области медицины. Мы проанализировали ключевые находки и представили их в доступной форме, чтобы читатели могли легко ориентироваться в актуальных темах. Этот материал станет отличным подспорьем для изучения медицины.
    ТОП-5 причин узнать больше – [url=https://berezniki.su/news/health/ekstrennyj-vyvod-iz-zapoya-chto-nuzhno-znat-i-kak-pomoch-sebe-ili-blizkim]вывод из запоя анонимно недорого[/url]

  209. Do you have a spam issue on this blog; I
    also am a blogger, and I was curious about your
    situation; many of us have developed some nice practices and we are looking to swap methods
    with other folks, why not shoot me an email if interested.

  210. WilliamGlurb

    Эта информационная публикация освещает широкий спектр тем из мира медицины. Мы предлагаем читателям ясные и понятные объяснения современных заболеваний, методов профилактики и лечения. Информация будет полезна как пациентам, так и медицинским работникам, желающим поддержать уровень своих знаний.
    Перейти к полной версии – [url=https://lolifruit.ru/poleznaya-informaciya/effektivnoe-vosstanovlenie-organizma-posle-prazdnichnyh-zastolij-sovety-speczialistov/]прокапывание от алкоголя[/url]

  211. Very good information. Lucky me I came across your site
    by accident (stumbleupon). I’ve bookmarked it for later!

  212. Вот такой момент: подбор качественного стационара — это всегда целая проблема и головная боль. Многие лично сталкивались с такой ситуацией,, когда родным или близким людям срочно понадобилась грамотная помощь врачей. И в этот момент обычно начинается паника просто из-за банальной нехватки информации.

    Я сам недавно детально изучал этот вопрос, искал действительно надежный медицинский вариант. Очень сложно с ходу отличить реальные отзывы пациентов от банальной рекламы. Если коротко, лучше сразу перейти на официальный сайт, где нет вранья, там подробно расписаны все важные условия и нюансы про круглосуточную наркологическую поддержку и условия проживания. В общем, не тяните время и долго не раздумывайте,, чтобы четко во всем разобраться.

    Вся актуальная информация и контакты доступны прямо здесь: стационар вывод из запоя [url=https://narkologicheskij-staczionar-sankt-peterburg-12.ru]https://narkologicheskij-staczionar-sankt-peterburg-12.ru[/url]. Сам сначала даже не думал, насколько там много подводных камней, на которые стоит обращать внимание, включая комфортные условия содержания, современные палаты и полную анонимность. Для Санкт-Петербурга это точно один из самых лучших вариантов, который стабильно работает и имеет хорошие отзывы.

  213. Denemek isteyen herkese aynı şeyi söylüyorum. Kapanan siteler yüzünden çok mağdur oldum. Adımları doğru şekilde uyguladıktan sonra erişim hatasız açıldı. En doğru adrese ulaştığımı düşünüyorum ve size de buradan bahsetmek istiyorum: 1xbet türkiye [url=https://1xbet-giris-86.com]1xbet türkiye[/url]. Şöyle düşünün yani — canlı bahis seçenekleri bile yeterli aslında.

    bonus kampanyaları bile beklentimin üzerindeydi. Kendi tecrübelerimi aktarıyorum size — kesinlikle pişman olmazsınız deneyin derim. Umarım siz de memnun kalırsınız…

  214. Şu bahis işlerine merak salalı çok oldu. Kapanan sitelerden bıktım resmen vallahi. Detaylı güncellemeleri kontrol edip süreci sorunsuz başlattım. En sonunda güvenilir bir kaynak buldum ve size de aktarayım dedim: 1xbet güncel adres [url=https://1xbet-giris-85.com]1xbet güncel adres[/url]. Ne diyeyim yani anlatayım mı — bahis olsun casino olsun her şey düşünülmüş resmen.

    çekimler konusunda da sıkıntı yok yani rahat olun. Birçok yer denedim emin olun yıllardır — başka yerde aramaya gerek yok artık valla. Şimdiden iyi eğlenceler dilerim hepinize…

  215. Hello there I am so delighted I found your weblog, I really found you by mistake, while I was searching on Google for something else, Anyhow I am here now and would just like to say cheers for a remarkable post and a all round exciting blog (I also love the theme/design), I don’t have time to browse it all at the moment but I have book-marked it and also included your RSS feeds, so when I have time I will be back to read a lot more, Please do keep up the superb work.

  216. Этот документ охватывает важные аспекты медицинской науки, сосредотачиваясь на ключевых вопросах, касающихся здоровья населения. Мы рассматриваем свежие исследования, клинические рекомендации и лучшие практики, которые помогут улучшить качество лечения и профилактики заболеваний. Читатели получат возможность углубиться в различные медицинские дисциплины.
    Нажмите, чтобы узнать больше – [url=https://lechimsustavy.ru/novosti/kak-vyvesti-iz-zapoya-vsyo-chto-nuzhno-znat-o-lechenii-v-klinike.html]клиника плюс[/url]

  217. Вот такой момент: подбор качественного стационара — это всегда целая проблема и головная боль. Многие лично сталкивались с такой ситуацией,, когда кому-то из членов семьи срочно понадобилась грамотная помощь врачей. И тут сразу возникает главный вопрос: куда именно везти человека?

    Мой коллега по работе долго искал действительно надежный медицинский вариант. Очень сложно с ходу отличить реальные отзывы пациентов от банальной рекламы. Если коротко, лучше сразу перейти на официальный сайт, где нет вранья, там действительно раскладывают по полочкам всю подноготную про круглосуточную наркологическую поддержку и условия проживания. В такой ситуации лучше один раз внимательно глянуть самостоятельно, чтобы четко во всем разобраться.

    Все важные детали и лицензии центра находятся только тут: стационар наркологический [url=www.narkologicheskij-staczionar-sankt-peterburg-12.ru]www.narkologicheskij-staczionar-sankt-peterburg-12.ru[/url]. Сам сначала даже не думал, насколько там много подводных камней, на которые стоит обращать внимание, и главное — там работают доктора, которые реально спасают людей. Для Санкт-Петербурга это точно один из самых лучших вариантов, который стабильно работает и имеет хорошие отзывы.

  218. Açıkçası ben de önceden çok zorlanıyordum. Sürekli adres değişimi can sıkıyor. Ama sonunda sağlam bir kaynak buldum.

    Casino oyunlarına meraklıysanız burayı kesinlikle tavsiye ederim. Güncel sistem ayarlarını kontrol ettikten sonra erişim sağlamak en mantıklısı. Giriş adresi tam olarak şu şekilde: 1xbet giriş [url=https://1xbet-giris-82.com]1xbet giriş[/url]. Kısacası durum şu — 1xbet güncel adres arayanlar buraya baksın.

    Çekimler konusunda hiç sıkıntı yaşamadım. Çevremdekilere de söyledim — en memnun kaldığım yer burası oldu. Şimdiden bol kazançlar…

  219. I’m very happy to discover this web site. I wanted to thank you for your
    time due to this fantastic read!! I definitely appreciated
    every bit of it and I have you bookmarked to check out new information in your site.

  220. I don’t know if it’s just me or if everybody else encountering issues with your blog.
    It appears as if some of the written text in your content are running off the screen. Can somebody else please comment and let me know if this is happening to them as well?
    This might be a issue with my browser because I’ve
    had this happen before. Thanks

  221. Народ, привет! Ох, уже голова болит с этим тимбилдингом, нужны нормальные презенты для партнеров. Может, кто шарит где лучше брать сувенирную продукцию с логотипом. заказ сувенирной продукции с логотипом [url=https://suvenirnaya-produkcziya-s-logotipom-10.ru]https://suvenirnaya-produkcziya-s-logotipom-10.ru[/url] Посоветуйте нормального поставщика сувенирной продукции с логотипом, чтобы не обдиралово было. Нужно штук 300-500, но если будет норм цена, можем и больше взять. А то я уже второй день в интернете сижу и ничего адекватного не нашёл.

  222. Ребята, привет! Долго думал, стоит ли начинать эту волокиту. Поменяли газовую плиту, сдвинули раковину, а стены вообще вынесли — думал, пронесёт. В общем, теперь легализовывать этот бардак придётся официально. И тут встал вопрос: сколько стоит узаконить перепланировку [url=https://skolko-stoit-uzakonit-pereplanirovku-10.ru]сколько стоит узаконить перепланировку[/url] просто интересно, стоимость согласования перепланировки квартиры сейчас вообще реальная или грабёж. Или взносы в жилинспекцию за выдачу акта. Если кто недавно проходил это ад, поделитесь. Без этого а если решите ипотеку рефинансировать, БТИ зарубит. Короче, просто сколько отдать, чтобы спать спокойно с новой планировкой.

  223. Artikel yang sangat menarik dan informatif. Banyak pengguna di Indonesia mencari informasi terpercaya tentang viagra indonesia dan kesehatan pria.
    Konten seperti ini sangat membantu pembaca memahami penggunaan yang aman dan efektif.

    Terima kasih atas artikel yang bermanfaat ini. Topik viagra
    indonesia memang banyak dicari saat ini, terutama bagi mereka yang ingin mendapatkan informasi kesehatan pria secara aman dan tepat.

    Konten yang bagus dan mudah dipahami. Informasi mengenai viagra indonesia sangat
    relevan dan membantu banyak orang mendapatkan edukasi yang
    benar tentang kesehatan pria.

  224. The post is absolutely great! Lots of great info and inspiration, both of which we all need! Also like to admire the time and effort you put into your blog and detailed information you offer! I will bookmark your website!

  225. Эта публикация содержит ценные советы и рекомендации по избавлению от зависимости. Мы обсуждаем различные стратегии, которые могут помочь в процессе выздоровления и важность обращения за помощью. Читатели смогут использовать полученные знания для улучшения своего состояния.
    Открыть полностью – [url=https://ubirayvolos.ru/bez-rubriki/medicinskaya-detoksikaciya.html]лечение наркомании на дому[/url]

  226. Эта статья подробно расскажет о процессе выздоровления, который включает в себя эмоциональную, физическую и психологическую реабилитацию. Мы обсуждаем значимость поддержки и наличие профессиональных программ. Читатели узнают, как строить новую жизнь и не возвращаться к старым привычкам.
    Подробнее можно узнать тут – [url=https://jaecoo-rtds-yug.ru/alkogol-za-rulyom-vliyanie-na-reakcziyu-voditelya-i-professionalnaya-pomoshh-pri-zavisimosti/]вывод из запоя дешево нижний новгород[/url]

  227. WilliamPiows

    Публикация посвящена жизненным историям людей, успешно справившихся с зависимостью. Мы покажем, что выход есть, и он начинается с первого шага — принятия проблемы и желания измениться.
    Что ещё нужно знать? – [url=https://carp-profi.ru/bezopasnost-na-dikoj-prirode/]вызвать врача нарколога на дом[/url]

  228. I was wondering if you ever thought of changing the structure of your website?
    Its very well written; I love what youve got to say.

    But maybe you could a little more in the way of content so people could
    connect with it better. Youve got an awful lot of text for only having 1 or
    2 images. Maybe you could space it out better?

  229. Честно говоря, долго выбирал, направления для детей, но после кучи долгих обсуждений наткнулся на один нормальный человеческий вариант. К слову, вот что я понял: современная онлайн-школа для детей — это серьёзный и комплексный подход. Там и программа насыщенная, без лишней воды, что очень радует на практике.

    В общем, кому понимает толк в теме образовательные онлайн школы — посмотрите условия, вот здесь все выложено без лишней воды: образовательные онлайн школы [url=https://shkola-onlajn-54.ru]образовательные онлайн школы[/url].

    А я пока пойду дальше разбираться с расписанием. Потому что обычная школа часто проигрывает по всем фронтам, а тут организована именно частная школа онлайн. Пригодится точно, потом еще спасибо скажете.

  230. Brandonspoke

    Обзор посвящён процессу восстановления после зависимостей. Мы расскажем о различных этапах реабилитации, поддерживающих ресурсах и важности мотивации в достижении устойчивого выздоровления.
    Рассмотреть проблему всесторонне – [url=https://pronikotin.ru/stati/perekrestnaya-zavisimost-kak-kurenie-i-alkogol-razrushayut-organizm.html]вывести из запоя цена[/url]

  231. Долго рылся в интернете на разных форумах, Знакомая многим фигня, потерял контакт со старым хорошим другом. Стало дико интересно,. И знаете что? Тут главное знать, куда именно смотреть и какие базы юзать.

    Короче, если вас сейчас волнует тот же самый вопрос — пробить странный входящий звонок, то есть один нормальный рабочий метод. Конкретно про то, как найти человека по номеру телефона — вот здесь всё максимально норм расписано: как узнать по номеру телефона где находится человек [url=https://kak-najti-cheloveka-po-nomeru-telefona-4.ru]как узнать по номеру телефона где находится человек[/url].

    Друзьям ссылку скинул в телегу, им тоже помогло. Потому что а тут выложена конкретная и структурированная информация. В общем, кому надо — тот точно воспользуется. Надеюсь, кому-то тоже упростит жизнь.

  232. Artikel yang sangat menarik dan informatif. Banyak pengguna di
    Indonesia mencari informasi terpercaya tentang viagra
    indonesia dan kesehatan pria. Konten seperti ini sangat membantu pembaca memahami
    penggunaan yang aman dan efektif.

    Terima kasih atas artikel yang bermanfaat ini.
    Topik viagra indonesia memang banyak dicari saat ini, terutama bagi
    mereka yang ingin mendapatkan informasi kesehatan pria secara aman dan tepat.

    Konten yang bagus dan mudah dipahami. Informasi
    mengenai viagra indonesia sangat relevan dan membantu
    banyak orang mendapatkan edukasi yang benar tentang kesehatan pria.

  233. Эта статья освещает различные аспекты освобождения от зависимости и пути к выздоровлению. Мы обсуждаем важность осознания своей проблемы и обращения за помощью. Читатели получат практические советы о том, как преодолевать трудности и строить новую жизнь без зависимости.
    Смотри, что ещё есть – [url=https://vseparazity.ru/zdorove/kak-toksiny-ot-parazitov-i-alkogolya-razrushayut-organizm.html]вызов нарколога на дом екатеринбург[/url]

  234. Have you given any kind of thought at all with converting your current web-site into French? I know a couple of of translaters here that will would certainly help you do it for no cost if you want to get in touch with me personally.

  235. В этой статье мы говорим о важности поддержки в процессе выздоровления. Рассматриваются семьи, группы поддержки, специалисты и онлайн-ресурсы, которые могут сыграть решающую роль в избавлении от зависимости.
    А что дальше? – [url=https://zagar-ok.ru/bez-rubriki/kak-alkogol-razrushaet-krasotu-kozhi-i-kogda-trebuetsya-pomoshch-vracha]вызов врача нарколога на дом[/url]

  236. CharlieSpemy

    В этой публикации мы исследуем ключевые аспекты здоровья, включая влияние образа жизни на благополучие. Читатели узнают о важности правильного питания, физической активности и психического здоровья. Мы предоставим практические советы и рекомендации для поддержания здоровья и развития профилактических подходов.
    Продолжить чтение – [url=https://dizzwizz.ru/zdorovie/psihicheskie-posledstviya-dlitelnogo-zapoya.html]вывод из запоя нарколог 24[/url]

  237. Я в шоке от количества программ в интернете в последнее время, но после кучи долгих обсуждений наткнулся на один рабочий и проверенный вариант. К слову, вот что я понял: современная онлайн-школа для детей — это серьёзный и комплексный подход. Там и программа насыщенная, без лишней воды, так что прогресс виден сразу.

    В общем, кому надоело искать среди кучи мусора в теме онлайн образование школа — почитайте подробности, вот здесь все расписано в деталях: школы дистанционного обучения [url=https://shkola-onlajn-54.ru]школы дистанционного обучения[/url].

    Если честно, даже не ожидал такого крутого качества. Потому что без четкой системы в обучении сейчас вообще никуда, а тут организована именно частная школа онлайн. Советую не тянуть и сразу изучить тему.

  238. Excellent way of describing, and pleasant post to take facts regarding my presentation topic, which i am going to deliver in college.

  239. ข้อมูลชุดนี้ มีประโยชน์มาก ค่ะ
    ดิฉัน ไปอ่านเพิ่มเติมเกี่ยวกับ เรื่องที่เกี่ยวข้อง
    สามารถอ่านได้ที่ สล็อตออนไลน์ได้เงินจริง
    ลองแวะไปดู
    เพราะอธิบายไว้ละเอียด
    ขอบคุณที่แชร์ เนื้อหาดีๆ นี้
    และอยากเห็นบทความดีๆ แบบนี้อีก

  240. Эта публикация исследует взаимосвязь зависимости и психологии. Мы обсудим, как психологические аспекты влияют на появление зависимостей и процесс выздоровления. Читатели смогут понять важность профессиональной поддержки и применения научных подходов в терапии.
    Переходите по ссылке ниже – [url=https://kapitosha.net/muzhskoj-stress-i-alkogol-gde-prohodit-gran-mezhdu-obychnym-pohmelem-i-opasnym-dlya-zhizni-sostoyaniem.html]вызвать нарколога на дом срочно[/url]

  241. My brother suggested I might like this web site.
    He was entirely right. This post truly made my day. You can not imagine
    just how much time I had spent for this information! Thanks!

  242. you’re actually a just right webmaster. The site loading velocity is incredible.
    It sort of feels that you are doing any distinctive trick.
    Moreover, The contents are masterpiece. you have done a
    fantastic process in this topic!

  243. Я изначально скептически относился ко всей этой дистанционке. Думал, сын просто будет играть в танчики. Но жена настояла, нашли один портал с живыми учителями: [url=https://shkola-onlajn-53.ru]онлайн обучение для детей[/url] . Фишка в том, что можно спокойно закрыть программу без нервов и репетиторов по вечерам. Техподдержка отвечает быстро. Платформа не виснет на вебинарах, что для меня было критично. Короче, кому надоело возить чадо через весь город под дождем – заглядывайте.

  244. вывод из запоя стационар санкт петербург [url=https://vyvod-iz-zapoya-v-staczionare-sankt-peterburg-27.ru]вывод из запоя стационар санкт петербург[/url]

  245. Güvenli bahis deneyimi için [url=https://1xbet-giris-78.com]1xbet yeni giriş[/url] adresini kullanabilirsiniz.
    1xbet hesabınıza erişim sağlamak. Üyelik ve giriş süreci hızlıca tamamlanabilir. Kullanıcılar giriş yapmak için doğru siteyi seçmelidir. Site güvenliğine verilen önem yüksektir.

    Kullanıcılar giriş yapmak için ana sayfadaki giriş linkini kullanmalıdır. Kullanıcı adı ve şifre alanları özenle doldurulmalıdır. Sahte sitelere karşı dikkatli olunması önerilir.

    Üyeliğiniz yoksa, kayıt işlemi birkaç dakika içinde tamamlanabilir. Bilgilerin eksiksiz ve doğru doldurulması önem taşır. Doğrulama aşamasında telefon veya e-posta onayı gerekebilir.

    Hesabınız aktif olduktan sonra çeşitli avantajlarınız olur. Bahisler, canlı casino ve diğer oyunlar gibi aktiviteler erişilebilir hale gelir. Bonuslar ve özel tekliflerle kazancınızı artırabilirsiniz.

  246. Your idea is outstanding; the issue is something that not enough persons are speaking intelligently about. I’m very happy that I stumbled throughout this in my seek for one thing regarding this.

  247. คอนเทนต์นี้ อ่านแล้วเข้าใจง่าย ค่ะ
    ดิฉัน ได้อ่านบทความที่เกี่ยวข้องกับ เนื้อหาในแนวเดียวกัน

    ดูต่อได้ที่ Lovie
    ลองแวะไปดู
    เพราะให้ข้อมูลเชิงลึก
    ขอบคุณที่แชร์ ข้อมูลที่มีประโยชน์ นี้
    และอยากเห็นบทความดีๆ แบบนี้อีก

  248. คอนเทนต์นี้ ให้ข้อมูลดี ครับ
    ผม เพิ่งเจอข้อมูลเกี่ยวกับ หัวข้อที่คล้ายกัน
    ซึ่งอยู่ที่ Maddison
    น่าจะถูกใจใครหลายคน
    มีตัวอย่างประกอบชัดเจน
    ขอบคุณที่แชร์ บทความคุณภาพ
    นี้
    และหวังว่าจะมีข้อมูลใหม่ๆ มาแบ่งปันอีก

  249. Компания заслуживает высшей оценки за свой ответственный подход к работе. Они помогли мне восстановить дипломы, получить актуальные справки, оформить новые свидетельства и предоставили срочные нотариальные услуги. Документы были готовы даже раньше оговоренного срока https://spravka-diplom.com/diplomy-po-gorodam/diplom-v-krasnodare/

  250. Публикация охватывает основные направления развития современной медицины. Мы обсудим значимость научных исследований, инноваций в лечении и роли общественного участия в формировании системы здравоохранения.
    Только факты! – [url=https://carp-profi.ru/aptechka-i-bezopasnost-na-karpovoj-rybalke/]срочный вывод из запоя на дому[/url]

  251. Hi, i read your blog occasionally and i own a similar one and i was just curious if you get a lot of spam responses?

    If so how do you stop it, any plugin or anything you can advise?
    I get so much lately it’s driving me insane so any help is very
    much appreciated.

  252. Pretty component of content. I just stumbled upon your
    web site and in accession capital to claim that
    I get in fact enjoyed account your weblog posts. Anyway I will be subscribing to your feeds and even I fulfillment you
    get entry to consistently rapidly.

  253. В этом исследовании рассмотрены методы лечения зависимостей и их эффективность. Мы проанализируем различные подходы, используемые в реабилитационных центрах, и представим данные о результативности программ. Читатели получат надежные и научно обоснованные сведения о данной проблеме.
    Секреты успеха внутри – [url=https://eugrus.pp.ru/glavnyy-razdel/8476-tsifrovoy-proryv-v-narkologii-kak-tehnologii-spasayut-zhizni]наркологический частный центр[/url]

  254. Woah! I’m really digging the template/theme of this website.

    It’s simple, yet effective. A lot of times it’s hard to
    get that “perfect balance” between usability and visual appearance.
    I must say you have done a fantastic job with this. Additionally, the blog loads super fast for me on Firefox.
    Excellent Blog!

  255. Hi! Do you know if they make any plugins to assist with SEO?
    I’m trying to get my blog to rank for some targeted keywords but I’m
    not seeing very good results. If you know of any please share.
    Thank you!

  256. Публикация знакомит читателей с различными подходами к реабилитации. От традиционных методов до современных программ — вы узнаете, как выбрать оптимальный путь к выздоровлению и преодолеть препятствия на этом пути.
    Дополнительно читайте здесь – [url=https://predrekanie.ru/abstinentnyj-sindrom.html]капельница екатеринбург цены[/url]

  257. Good answers in return of this question with firm arguments
    and explaining the whole thing on the topic of that.

  258. Этот текст представляет собой обзор свежих данных и исследований в области медицины. Он призван помочь читателям понять, как научные достижения влияют на лечение, диагностику и общее состояние системы здравоохранения.
    Узнать больше > – [url=https://dizzwizz.ru/zdorovie/algoritm-pomoshchi-blizkomu-pri-zapoe.html]прокапаться от алкоголя цены[/url]

  259. Эта доказательная статья представляет собой глубокое погружение в успехи и вызовы лечения зависимостей. Мы обращаемся к научным исследованиям и опыту специалистов, чтобы предоставить читателям надежные данные об эффективности различных методик. Изучите, что работает лучше всего, и получите информацию от экспертов.
    Секреты успеха внутри – [url=https://zagar-ok.ru/bez-rubriki/kak-vernut-kozhe-siyanie-i-ubrat-oteki]частный нарколог на дом телефон[/url]

  260. Ahaa, its fastidious dialogue concerning this article here at this webpage, I have read all that, so now me also commenting here.

  261. Great beat ! I wish to apprentice while you amend your website, how can i subscribe
    for a blog site? The account aided me a acceptable deal.
    I had been tiny bit acquainted of this your broadcast offered bright clear idea

  262. Hi to all, how is the whole thing, I think every one is getting more from this site, and your
    views are pleasant for new visitors.

  263. 오늘, 저는 자녀들과 해변가에 갔습니다.
    조개껍데기를 발견해서 제 4살 딸에게 주며 “이걸 귀에 대면 바다 소리를 들을 수 있어”라고 했습니다.

    그녀가 조개껍데기를 귀에 대자 비명을 질렀습니다.
    안에 소라게가 있어서 그녀의 귀를 집었거든요.
    그녀는 다시는 돌아가고 싶어하지 않습니다!
    LoL 이건 완전히 주제에서 벗어났지만 누군가에게 말하고 싶었어요!

    It’s impressive that you are getting ideas from this piece of
    writing as well as from our argument made here.

  264. American Industrial Magazine (americanindustrialmagazine.com)
    es un portal digital y publicación especializada (bilingüe en inglés y español)
    enfocada en proveer noticias, análisis de mercado y tendencias sobre los sectores de manufactura, industria,
    tecnología, metalmecánica y farmacéutica.

    Su contenido abarca temas estratégicos y técnicos que impactan a América del Norte (principalmente México y Estados Unidos), incluyendo el nearshoring, la adopción de inteligencia artificial en fábricas, robótica (cobots), control de calidad predictivo, normativas de seguridad (OSHA,
    ISO 9001) y la escasez de talento especializado. Además, funciona como una plataforma
    de desarrollo profesional, ofreciendo cursos de capacitación técnica
    en software como Microsoft Excel (desde nivel
    básico hasta macros) y Autodesk Fusion 360.

  265. Этот текст посвящён сложным аспектам зависимости и её влиянию на жизнь человека. Мы обсудим психологические, физические и социальные последствия зависимого поведения, а также важность своевременного обращения за помощью.
    Углубиться в тему – [url=https://dailybest.me/kodirovanie-ot-alkogolizma-preparatami-obzor-metodov-i-preparata-torpedo.html]кодировка Торпедой[/url]

  266. Heya! I understand this is somewhat off-topic but I had to ask.
    Does operating a well-established website such as yours require a massive amount work?
    I’m brand new to operating a blog however I do write in my diary daily.

    I’d like to start a blog so I can share my personal experience and thoughts online.
    Please let me know if you have any kind of ideas or tips for
    new aspiring bloggers. Thankyou!

  267. Hey there! I’m at work surfing around your blog from my new iphone!
    Just wanted to say I love reading through your blog and look forward
    to all your posts! Keep up the superb work!

  268. Your writing has this gradual pull that makes it difficult to stop once you start, similar to how Tower Game builds tension step by step until you realize you’ve been fully immersed for much longer than you planned.

  269. What I admire most about your writing is the way you reveal deeper ideas through simple examples, a technique that reminds me of discovering unexpected layers of strategy hidden within a classic Table Game.

  270. Artikel yang sangat informatif dan bermanfaat. Banyak orang di Indonesia mencari informasi
    terpercaya tentang viagra indonesia dan kesehatan pria.
    Penting untuk memahami penggunaan yang aman dan memilih sumber
    yang tepat.

    Terima kasih atas informasi ini. Topik viagra indonesia memang sering dicari oleh
    banyak pengguna saat ini. Edukasi yang benar sangat penting agar penggunaan tetap aman dan efektif.

    Konten yang bagus dan mudah dipahami. Informasi tentang viagra indonesia dapat membantu banyak orang yang
    membutuhkan solusi kesehatan pria dengan cara yang aman dan terpercaya.

    Postingan yang sangat membantu. Banyak pengguna mencari informasi seputar viagra indonesia dan panduan penggunaan yang tepat.
    Artikel seperti ini sangat berguna bagi pembaca.

    Artikel berkualitas dan penuh informasi. Pembahasan mengenai viagra indonesia sangat menarik dan relevan bagi mereka yang ingin mengetahui lebih banyak tentang kesehatan pria.

  271. Hi there! This blog post could not be written any
    better! Looking through this article reminds me of my
    previous roommate! He constantly kept preaching about
    this. I’ll forward this information to him.

    Fairly certain he’ll have a great read. I appreciate you for sharing!

  272. В этом обзоре представлены различные методы избавления от зависимости, включая терапевтические и психологические подходы. Мы сравниваем их эффективность и предоставляем рекомендации для тех, кто хочет вернуться к трезвой жизни. Читатели смогут найти информацию о реабилитационных центрах и поддерживающих группах.
    Разобраться лучше – [url=https://newbabe.ru/raznoe/muzh-ushel-v-zapoj.html]вызов нарколога на дом[/url]

  273. Artikel yang sangat informatif dan bermanfaat.
    Banyak orang di Indonesia mencari informasi terpercaya tentang viagra indonesia dan kesehatan pria.
    Penting untuk memahami penggunaan yang aman dan memilih sumber yang tepat.

    Terima kasih atas informasi ini. Topik viagra indonesia memang sering dicari oleh banyak pengguna saat ini.
    Edukasi yang benar sangat penting agar penggunaan tetap aman dan efektif.

    Konten yang bagus dan mudah dipahami. Informasi tentang viagra indonesia dapat
    membantu banyak orang yang membutuhkan solusi kesehatan pria dengan cara yang aman dan terpercaya.

    Postingan yang sangat membantu. Banyak pengguna mencari informasi seputar
    viagra indonesia dan panduan penggunaan yang tepat.

    Artikel seperti ini sangat berguna bagi pembaca.

    Artikel berkualitas dan penuh informasi. Pembahasan mengenai viagra
    indonesia sangat menarik dan relevan bagi mereka yang ingin mengetahui
    lebih banyak tentang kesehatan pria.

  274. Этот информационный материал подробно освещает проблему наркозависимости, ее причины и последствия. Мы предлагаем информацию о методах лечения, профилактики и поддерживающих программах. Цель статьи — повысить осведомленность и продвигать идеи о необходимости борьбы с зависимостями.
    Посмотреть всё – [url=https://dizzwizz.ru/zdorovie/pochemu-chelovek-ne-mozhet-ostanovit-zapoj-samostoyatelno.html]капельница от запоя воронеж[/url]

  275. В этой публикации мы предложим ряд рекомендаций по избавлению от зависимостей и успешному восстановлению. Мы обсудим методы привлечения поддержки и важность самосознания. Эти советы помогут людям вернуться к нормальной жизни и стать на путь выздоровления.
    Полезно знать – [url=https://axi-med.ru/kapelnitsy-posle-alkogolnogo-zapoya-kak-im-pomoch-i-chem-eto-opasno]clinica plus[/url]

  276. Hi there! I could have sworn I’ve visited this blog before but after going through
    some of the posts I realized it’s new to me. Nonetheless, I’m certainly happy I
    found it and I’ll be bookmarking it and checking back regularly!

  277. В данной статье рассматриваются проблемы общественного здоровья и социальные факторы, влияющие на него. Мы акцентируем внимание на значении профилактики и осведомленности в защите здоровья на уровне общества. Читатели смогут узнать о новых инициативах и программах, направленных на улучшение здоровья населения.
    Есть чему поучиться – [url=https://kfaktiv.ru/lechenie-alkogolizma-i-narkomanii-v-klinike.html]анонимная наркологическая клиника[/url]

  278. Delbertutisp

    В этом исследовании рассмотрены методы лечения зависимостей и их эффективность. Мы проанализируем различные подходы, используемые в реабилитационных центрах, и представим данные о результативности программ. Читатели получат надежные и научно обоснованные сведения о данной проблеме.
    Всё, что нужно знать – [url=https://gunsfriend.ru/vyvod-iz-zapoya-put-k-novoy-zhizni/]Капельница после запоя[/url]

  279. I like to spend my free time by scaning various internet recourses. Today I came across your site and I found it is as one of the best free resources available! Well done! Keep on this quality!

  280. В этой статье рассматриваются способы преодоления зависимости и успешные истории людей, которые справились с этой проблемой. Мы обсудим важность поддержки со стороны близких и профессионалов, а также стратегии, которые могут помочь в процессе выздоровления. Научитесь первоочередным шагам к новой жизни.
    Перейти к полной версии – [url=https://90is.ru/kapelnica-ot-pohmelya-spasenie-ili-mif/]капельница от похмелья в Твери[/url]

  281. We are a group of volunteers and starting a new initiative in our community. Your blog provided us with valuable information to work on|.You have done a marvellous job!

  282. В этой статье рассматриваются актуальные вопросы, связанные с развитием медицинской науки и её внедрением в повседневную практику. Особое внимание уделено вопросам профилактики, ранней диагностики и использованию технологий для улучшения здоровья человека.
    Хочу знать больше – [url=https://glaznoy-doctor.ru/без-рубрики/alkogolnaya-intoksikaciya-i-poterya-zreniya-mexanizmy-razrusheniya-glaznogo-nerva-i-ekstrennaya-pomoshh.html]нарколог на дом цена воронеж[/url]

  283. I’m truly enjoying the design and layout of your blog.
    It’s a very easy on the eyes which makes it much more enjoyable for me to come
    here and visit more often. Did you hire out a developer to
    create your theme? Fantastic work!

  284. Hello Dear, are you actually visiting this website on a regular basis, if
    so then you will absolutely take pleasant knowledge.

  285. Woah! I’m really loving the template/theme of this blog. It’s simple, yet effective.
    A lot of times it’s very difficult to get that
    “perfect balance” between usability and visual appearance.
    I must say you’ve done a very good job with this.
    In addition, the blog loads very fast for me on Firefox.
    Exceptional Blog!

  286. В данном обзоре представлены основные направления и тренды в области медицины. Мы обсудим актуальные проблемы здравоохранения, свежие открытия и новые подходы, которые меняют представление о лечении и профилактике заболеваний. Эта информация будет полезна как специалистам, так и широкой публике.
    Что ещё нужно знать? – [url=https://3news.ru/kak-pobedit-alkogolnuyu-zavisimost-lechenie-i-reabilitacziya/]клиника плюс тверь[/url]

  287. Публикация охватывает основные направления развития современной медицины. Мы обсудим значимость научных исследований, инноваций в лечении и роли общественного участия в формировании системы здравоохранения.
    Посмотреть подробности – [url=https://cultmoscow.com/sobytiya/narkologicheskaya-klinika-speczializirovannaya-pomoshh-v-lechenii-narkomanii/]кодировка от алкоголя владимир[/url]

  288. Эта публикация обращает внимание на важность профилактики зависимостей. Мы обсудим, как осведомленность и образование могут помочь в предотвращении возникновения зависимости. Читатели смогут ознакомиться с полезными советами и ресурсами, которые способствуют здоровому образу жизни.
    Разобраться лучше – [url=https://dooralei.ru/zdorove/lechenie-alkogolizma-i-narkomanii-osobennosti/]сайт наркологической клиники[/url]

  289. Публикация охватывает основные направления развития современной медицины. Мы обсудим значимость научных исследований, инноваций в лечении и роли общественного участия в формировании системы здравоохранения.
    Получить дополнительную информацию – [url=https://www.pravda-tv.ru/2023/09/04/579605/vyvod-iz-zapoya-preimushhestva-i-organizatsiya-protsessa-na-domu]наркологическая клиника во владимире[/url]

  290. Incredible! This blog looks exactly like my old one! It’s on a entirely different subject but it has
    pretty much the same layout and design. Outstanding choice of colors!

  291. Hey would you mind letting me know which webhost you’re working
    with? I’ve loaded your blog in 3 different internet browsers and I must say this blog loads a lot faster then most.
    Can you recommend a good internet hosting provider at a reasonable price?
    Thank you, I appreciate it!

  292. VincentCrype

    В этой статье рассматривается комплексный подход к избавлению от зависимости. Читатель узнает, как сочетание физического, психологического и духовного восстановления помогает достичь стойкого выздоровления.
    Получить профессиональную консультацию – [url=https://happyformat.ru/stati/kapelnitsa-ot-pohmelya-v-balashihe-anonimno-na-domu-i-v-statsionare-bystroe-reshenie-dlya-vosstanovleniya.html]наркологическая помощь в Балашихе[/url]

  293. เนื้อหานี้ อ่านแล้วเพลินและได้สาระ ครับ
    ดิฉัน ไปอ่านเพิ่มเติมเกี่ยวกับ เรื่องที่เกี่ยวข้อง
    สามารถอ่านได้ที่ ทางเข้า genie168
    ลองแวะไปดู
    มีการยกตัวอย่างที่เข้าใจง่าย
    ขอบคุณที่แชร์ บทความคุณภาพ นี้
    จะรอติดตามเนื้อหาใหม่ๆ ต่อไป

  294. CharlesbAiva

    Текст посвящён распространённым мифам о зависимости и их развенчанию. Мы предоставим научно обоснованную информацию и дадим рекомендации по выбору эффективного способа борьбы с зависимым поведением.
    Изучить эмпирические данные – [url=https://pronikotin.ru/stati/lechenie-xronicheskogo-alkogolizma-vygodnye-ceny-v-tveri-anonimno-kruglosutochno.html]клиника плюс[/url]

  295. Kennethreild

    Этот текст посвящён сложным аспектам зависимости и её влиянию на жизнь человека. Мы обсудим психологические, физические и социальные последствия зависимого поведения, а также важность своевременного обращения за помощью.
    ТОП-5 причин узнать больше – [url=https://velosipedmsk.ru/kapelnicza-ot-zapoya-v-smolenske-polnoe-rukovodstvo-po-detoksikaczii-i-vosstanovleniyu/]smolensk alco rehab[/url]

  296. Этот текст посвящён сложным аспектам зависимости и её влиянию на жизнь человека. Мы обсудим психологические, физические и социальные последствия зависимого поведения, а также важность своевременного обращения за помощью.
    Наши рекомендации — тут – [url=https://coollib.in/node/580813]наркологическая клиника во владимире[/url]

  297. โพสต์นี้ อ่านแล้วเข้าใจง่าย ค่ะ
    ผม ไปเจอรายละเอียดของ เรื่องที่เกี่ยวข้อง
    สามารถอ่านได้ที่ Valentin
    เผื่อใครสนใจ
    มีการยกตัวอย่างที่เข้าใจง่าย
    ขอบคุณที่แชร์ เนื้อหาดีๆ นี้
    และหวังว่าจะมีข้อมูลใหม่ๆ มาแบ่งปันอีก

  298. Greetings! I’ve been reading your blog for a long time now and finally got the courage to
    go ahead and give you a shout out from Lubbock Texas!
    Just wanted to tell you keep up the excellent job!

  299. В данной статье рассматриваются проблемы общественного здоровья и социальные факторы, влияющие на него. Мы акцентируем внимание на значении профилактики и осведомленности в защите здоровья на уровне общества. Читатели смогут узнать о новых инициативах и программах, направленных на улучшение здоровья населения.
    Доступ к полной версии – [url=https://mirlady.org/narkologicheskaya-klinika-v-luganske-kakie-osobennosti/]вывод из запоя в Луганске[/url]

  300. Artikel yang sangat menarik dan informatif.
    Banyak pengguna di Indonesia mencari informasi terpercaya tentang viagra indonesia dan kesehatan pria.
    Konten seperti ini sangat membantu pembaca memahami penggunaan yang aman dan efektif.

    Terima kasih atas artikel yang bermanfaat ini. Topik viagra indonesia memang
    banyak dicari saat ini, terutama bagi mereka yang ingin mendapatkan informasi kesehatan pria secara aman dan tepat.

    Konten yang bagus dan mudah dipahami. Informasi mengenai viagra indonesia sangat
    relevan dan membantu banyak orang mendapatkan edukasi yang benar tentang kesehatan pria.

  301. В этой публикации мы обсуждаем современные методы лечения различных заболеваний. Читатели узнают о новых медикаментах, терапиях и исследованиях, которые активно применяются для лечения. Мы нацелены на то, чтобы предоставить практические знания, которые могут помочь в борьбе с недугами.
    Откройте для себя больше – [url=https://onelove.su/kak-najti-nadyozhnuyu-narkologicheskuyu-kliniku-v-mariupole-chto-vazhno-znat-i-na-chto-obratit-vnimanie/]detox24 в мариуполе[/url]

  302. Hi, I think your blog might be having browser compatibility
    issues. When I look at your blog in Safari, it
    looks fine but when opening in Internet Explorer, it has some overlapping.
    I just wanted to give you a quick heads up! Other then that, fantastic blog!

  303. Charlesoxype

    Этот текст посвящён сложным аспектам зависимости и её влиянию на жизнь человека. Мы обсудим психологические, физические и социальные последствия зависимого поведения, а также важность своевременного обращения за помощью.
    Это ещё не всё… – [url=https://rem-kvart.ru/sovety/kak-opredelit-nalichie-narkoticheskoj-zavisimosti-i-otlichit-ot-vremennyx-sostoyanij.html]наркологическую клинику в Балашихе[/url]

  304. I love how you manage to keep your readers on the edge of their seats with such tactical layout and sharp commentary, capturing the exact same suspense as waiting for the next round in a popular evolution game.

  305. The profound depth and vivid imagery you bring to this piece show a level of mastery that makes your content feel incredibly premium, offering a level of excitement that rivals a thrilling game of KingMidas.

  306. I just like the helpful information you supply for your articles.
    I will bookmark your blog and take a look at again right here regularly.
    I’m slightly certain I’ll learn a lot of new stuff right right here!
    Best of luck for the following!

  307. Hello, this weekend is pleasant in favor of me, for the reason that this point in time
    i am reading this impressive educational post here at my house.

  308. This is really interesting, You’re a very skilled blogger. I have joined your feed and look forward to seeking more of your fantastic post. Also, I have shared your website in my social networks!

  309. Hey there would you mind letting me know which hosting company you’re working with?
    I’ve loaded your blog in 3 completely different web browsers and I must
    say this blog loads a lot quicker then most.
    Can you suggest a good hosting provider at a honest price?
    Cheers, I appreciate it!

  310. Этот краткий обзор предлагает сжатую информацию из области медицины, включая ключевые факты и последние новости. Мы стремимся сделать информацию доступной и понятной для широкой аудитории, что позволит читателям оставаться в курсе актуальных событий в здравоохранении.
    Изучить вопрос глубже – [url=https://kardioportal.ru/content/ot-chego-lopayutsya-kapillyary-v-glazah]детоксикация на дому[/url]

  311. наркологический стационар санкт петербург [url=https://narkologicheskij-staczionar-sankt-peterburg-14.ru]наркологический стационар санкт петербург[/url]

  312. алкоголизм лечение выезд на дом [url=https://narkolog-na-dom-moskva-28.ru]алкоголизм лечение выезд на дом[/url]

  313. เนื้อหานี้ ให้ข้อมูลดี ครับ
    ดิฉัน ไปเจอรายละเอียดของ ข้อมูลเพิ่มเติม
    ดูต่อได้ที่ gu899
    น่าจะถูกใจใครหลายคน
    เพราะอธิบายไว้ละเอียด
    ขอบคุณที่แชร์ คอนเทนต์ดีๆ นี้
    และหวังว่าจะได้เห็นโพสต์แนวนี้อีก

  314. I was suggested this blog by my cousin. I am not sure
    whether this post is written by him as no one else know such detailed about
    my trouble. You’re wonderful! Thanks!

  315. Hey! I know this is somewhat off topic but I was wondering if you
    knew where I could locate a captcha plugin for my
    comment form? I’m using the same blog platform as yours and I’m
    having problems finding one? Thanks a lot!

  316. Great blog here! Also your site loads up fast! What web host are you using?
    Can I get your affiliate link to your host? I wish my website loaded up as
    fast as yours lol

  317. I’m amazed, I have to admit. Rarely do I encounter a blog that’s both equally educative and amusing, and
    without a doubt, you’ve hit the nail on the head.
    The problem is something that too few folks are
    speaking intelligently about. I am very happy
    that I came across this during my search for something concerning this.

  318. Текст посвящён распространённым мифам о зависимости и их развенчанию. Мы предоставим научно обоснованную информацию и дадим рекомендации по выбору эффективного способа борьбы с зависимым поведением.
    Всё, что нужно знать – [url=https://b-tattoo.ru/vyvod-iz-zapoya-v-krasnodare-bystro-bezopasno-anonimno.html]наркологическая клиника краснодар[/url]

  319. В этой публикации мы предложим ряд рекомендаций по избавлению от зависимостей и успешному восстановлению. Мы обсудим методы привлечения поддержки и важность самосознания. Эти советы помогут людям вернуться к нормальной жизни и стать на путь выздоровления.
    Изучить рекомендации специалистов – [url=https://dlja-pohudenija.ru/lechenie-zabolevanij/vyvod-iz-zapoya]детоксикация на дому[/url]

  320. obviously like your web-site however you need
    to test the spelling on quite a few of your posts.
    Many of them are rife with spelling problems and
    I to find it very troublesome to inform the truth nevertheless I’ll certainly come again again.

  321. В этой статье мы рассматриваем разрушительное влияние зависимости на жизнь человека. Обсуждаются аспекты, такие как здоровье, отношения и профессиональные достижения. Читатели узнают о необходимости обращения за помощью и о путях к восстановлению.
    Уникальные данные только сегодня – [url=https://kozhica.ru/safehair/narkologicheskaya-klinika-v-lyubertsah-novye-podhody-k-lecheniyu.html]детский психиатр люберцы[/url]

  322. I used to be suggested this website via my cousin. I am not positive whether or not this post is written by way of him as nobody else understand such specified about my difficulty.
    You are wonderful! Thanks!

  323. Good day! I could have sworn I’ve been to this
    blog before but after browsing through a few of
    the articles I realized it’s new to me. Anyhow, I’m definitely delighted I discovered it and I’ll be bookmarking it and checking
    back regularly!

  324. Heya i am for the first time here. I came across this board and I find It really useful & it helped me out a lot.
    I’m hoping to offer something again and aid others like
    you aided me.

  325. Hello everyone, it’s my first go to see at this website,
    and paragraph is actually fruitful in favor of
    me, keep up posting these types of articles.

  326. Howdy! I’m at work surfing around your blog from my new iphone 4!
    Just wanted to say I love reading through your blog and look forward to all your posts!

    Keep up the fantastic work!

  327. I started reading your post during a quiet afternoon, and before I knew it I was completely absorbed, feeling the same thrill and anticipation I get when exploring Fortune Coins for the first time.

  328. Last night I stayed up longer than intended because each paragraph pulled me deeper into your narrative, giving me the same quiet thrill that comes from carefully planning moves in Color Games.

  329. кодирование от алкоголизма стационар [url=https://narkologicheskij-staczionar-sankt-peterburg-11.ru]кодирование от алкоголизма стационар[/url]

  330. кодирование от алкоголизма стационар [url=https://narkologicheskij-staczionar-sankt-peterburg-11.ru]кодирование от алкоголизма стационар[/url]

  331. Hello very cool web site!! Man .. Beautiful ..
    Superb .. I will bookmark your web site and take the
    feeds additionally? I am glad to find a lot of useful information here within the put up, we’d like develop more techniques in this regard, thanks for sharing.

    . . . . .

  332. Социальный проект Volonteru — платформа для волонтеров и поддержки общества. Здесь публикуются обзоры социальных проектов, а также статьи о безопасности в сети.

    Главный портал сообщества: https://volonteru.ru

    Сегодня многие пользователи активно интересуются запросами «кракен даркнет», а также «kraken darknet». Специалисты проекта советуют соблюдать осторожность в интернете.

    [url=https://volonteru.ru]kraken ссылка[/url]

    На сайте проекта регулярно выходят материалы о безопасности пользователей, а также истории волонтеров. Люди, интересующиеся темами «кракен маркет», могут попасть на опасные ресурсы.

    [url=https://volonteru.ru]кракен настоящая ссылка[/url]

    Эксперты платформы регулярно рассказывают о цифровой безопасности. В материалах проекта часто обсуждаются темы, связанные с опасными интернет-ресурсами, которые могут встречаться пользователям при поиске запросов «kraken onion».

    Современный интернет постоянно меняется, и вместе с полезными сервисами появляются новые угрозы.

    [url=https://volonteru.ru]кракен ссылка[/url]

    На платформе Volonteru.ru также публикуются обзоры благотворительных проектов. Проект объединяет людей, готовых помогать обществу и одновременно напоминает о важности интернет-безопасности.

    Многие пользователи изучают запросы «kraken darknet», однако важно помнить о цифровой безопасности.

    [url=https://volonteru.ru]Кракен даркнет[/url]

    По этой причине специалисты платформы рекомендуют использовать только надежные источники информации. Команда проекта считает важным повышать цифровую грамотность пользователей и помогать развитию социальных инициатив.

    Volonteru.ru объединяет волонтеров и активистов, а также публикует контент о цифровой безопасности.

  333. Публикация посвящена жизненным историям людей, успешно справившихся с зависимостью. Мы покажем, что выход есть, и он начинается с первого шага — принятия проблемы и желания измениться.
    Открой скрытое – [url=http://ussur.net/news/75430/]капельница на дому калининград[/url]

  334. Поведение пациента при алкогольной интоксикации может резко меняться: появляется агрессия, страх, потеря контроля, раздражительность, нарушение памяти, бессонница, депрессии, тревога, психозов. В таких случаях врач должен оценить состояние пациента и решить, возможен ли вывод из запоя на дому или требуется госпитализация в стационаре.
    Разобраться лучше – [url=https://vyvod-iz-zapoya-sochi20.ru/]вывод из запоя на дому недорого в сочи[/url]

  335. I’d like to thank you for the efforts you have put in writing this
    website. I’m hoping to view the same high-grade content by you in the future as well.

    In fact, your creative writing abilities has motivated me to get my
    own website now 😉

  336. โพสต์นี้ น่าสนใจดี ครับ
    ผม ไปเจอรายละเอียดของ
    เรื่องที่เกี่ยวข้อง
    ที่คุณสามารถดูได้ที่ betflik282
    น่าจะถูกใจใครหลายคน

    เพราะอธิบายไว้ละเอียด
    ขอบคุณที่แชร์ ข้อมูลที่มีประโยชน์
    นี้
    จะรอติดตามเนื้อหาใหม่ๆ
    ต่อไป

  337. Great blog right here! You seem to put a significant amount of material on the site rather quickly.

  338. Everything is very open with a precise explanation of the issues.
    It was really informative. Your site is useful.

    Thanks for sharing!

  339. A person essentially help to make severely articles I might state.

    That is the first time I frequented your web page and to this point?
    I amazed with the analysis you made to create this particular publish extraordinary.
    Excellent task!

  340. You can definitely see your expertise in the article you write.
    The arena hopes for even more passionate writers such as you who aren’t afraid to mention how they believe.
    All the time follow your heart.

  341. электрокарнизы купить в москве [url=https://elektrokarniz150.ru]электрокарнизы купить в москве[/url]

  342. Этот текст посвящён сложным аспектам зависимости и её влиянию на жизнь человека. Мы обсудим психологические, физические и социальные последствия зависимого поведения, а также важность своевременного обращения за помощью.
    Посмотреть подробности – [url=https://vampshop.ru/blog/obsessivno-kompulsivnoe-rasstrojstvo-lichnosti-okrl-put-k-vyzdorovleniyu]detox24 в краснодаре[/url]

  343. เนื้อหานี้ มีประโยชน์มาก ครับ
    ดิฉัน ได้อ่านบทความที่เกี่ยวข้องกับ หัวข้อที่คล้ายกัน
    ซึ่งอยู่ที่ Norine
    เผื่อใครสนใจ
    เพราะให้ข้อมูลเชิงลึก
    ขอบคุณที่แชร์ ข้อมูลที่มีประโยชน์ นี้
    และหวังว่าจะได้เห็นโพสต์แนวนี้อีก

  344. Review a dynamic gaming page where steady followers can share balanced play, and Scatter Game adds flexible updates, clear movement, and agile format during short breaks that gives direct online every visit more clarity

  345. Enter this engaging destination for interested readers who compare direct entry, prefer wisely browsing, and want flexible settings with agile simplicity through Fa Chai that keeps the gaming page style page useful and appealing

  346. Enter a balanced gaming page where weekend visitors can rely on smooth browsing, and bathala game adds flexible mechanics, clear movement, and agile pattern for smooth discovery that offers access a brighter digital experience

  347. Find a inviting gaming page where modern users can keep quick loading, and bathala online adds flexible playflows, clear movement, and agile quality through simple steps trust smart friendly modern that encourages confident clicks

  348. See a refined gaming page where curious readers can welcome focused content, and Bathala adds flexible discoveries, clear movement, and agile clarity for balanced exploration that makes focus clarity appeal smart browsing feel natural

  349. Browse a inviting gaming page where modern users can keep quick loading, and Color Game adds flexible playflows, clear movement, and relaxed character through simple steps quality balance energy timing that encourages confident clicks

  350. AnthonypuchE

    Вызов нарколога на дом актуален в ситуации, когда пациент не может самостоятельно прийти на прием в клинике, агрессивно реагирует на уговоры, находится в тяжелой похмельной интоксикации или боится постановки на учет. Врач помогает на месте: проводит первичная диагностика, осмотр, назначает медикаментозные процедуры, дает рекомендации по дальнейшему лечению и объясняет родственникам, как действовать после приезда бригады.
    Получить дополнительную информацию – [url=https://narkolog-na-dom-kazan22.ru/]запой нарколог на дом[/url]

  351. Pinata Wins gives digital explorers a dynamic place to notice smart organization with casually browsing, flexible rewards, and relaxed entry for page value during quick decisions style value focus clarity that feels worth revisiting

  352. If most people wrote about this subject with the eloquence that you just did, I’m sure people would do much more than just read, they act. Great stuff here. Please keep it up.

  353. Этот обзор посвящен успешным стратегиям избавления от зависимости, включая реальные примеры и советы. Мы разоблачим мифы и предоставим читателям достоверную информацию о различных подходах. Получите опыт многообразия методов и найдите подходящий способ для себя!
    Погрузиться в научную дискуссию – [url=https://popname.ru/posts/alkogolizm-i-otkaz-ot-alkogolya]наркологическая помощь краснодар[/url]

  354. This is valuable stuff.In my opinion, if all website owners and bloggers developed their content they way you have, the internet will be a lot more useful than ever before.

  355. В этой статье рассматриваются различные аспекты избавления от зависимости, включая физические и психологические методы. Мы обсудим поддержку, мотивацию и стратегии, которые помогут в процессе выздоровления. Читатели узнают, как преодолеть трудности и двигаться к новой жизни без зависимости.
    Информация доступна здесь – [url=http://www.dietaonline.ru/portal/articles/1049-lechenie-alkogolizma-pochemu-stoit-obratitsja-za-pomoschju-svoevremenno.html]detox24[/url]

  356. I’m so happy to read this. This is the type of manual that needs to be given and not the random misinformation that’s at the other blogs. Appreciate your sharing this best doc.

  357. As a newcomer, I’m absolutely captivated by the fascinating topics in Super Jackpot, especially the lively discussions. The sheer number of comments on your articles clearly shows I’m not the only one hooked! Super Jackpot

  358. вывод из запоя на дому екатеринбург [url=https://vyvod-iz-zapoya-na-domu-ekaterinburg-30.ru]вывод из запоя на дому екатеринбург[/url]

  359. Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here It’s always nice when you can not only be informed, but also entertained I’m sure you had fun writing this article.

  360. My brother suggested I might like this websiteHe was once totally rightThis post truly made my dayYou can not imagine simply how a lot time I had spent for this information! Thanks!

  361. Этот обзор содержит информацию о передовых достижениях в области медицины. Мы разберем инновационные технологии, которые меняют подход к лечению и диагностике, а также их влияние на эффективность оказания медицинской помощи.
    Читать дальше – [url=https://mycistit.ru/eto-interesno/kak-osvoboditsya-ot-alkogolya-kodirovka-i-ee-effektivnost]детокс24 краснодар[/url]

  362. I do not even know the way I finished up here, however I assumed this
    publish was once great. I do not know who you are but certainly you’re
    going to a well-known blogger when you are not already.
    Cheers!

  363. Spot on with this write-up, I actually assume this website needs far more consideration. I will in all probability be once more to learn rather more, thanks for that info.

  364. Your storytelling style feels very human because you allow emotions and ideas to unfold naturally instead of trying too hard to impress readers, which honestly reminded me of the calm enjoyment people find while exploring Table Game casually online.

  365. В этой статье обсуждаются актуальные медицинские вопросы, которые волнуют общество. Мы обращаем внимание на проблемы, касающиеся здравоохранения и лечения, а также на новшества в области медицины. Читатели будут осведомлены о последних событиях и смогут следить за тенденциями в медицине.
    Смотрите также – [url=https://zdorovnik.com/zakulise-alkogolizma-razbiraem-prichiny-i-faktory-vliyayushhie-na-razvitie-zavisimosti/]кодировка от алкоголя краснодар[/url]

  366. Hi, I do believe this is an excellent web site. I stumbledupon it 😉 I’m going
    to revisit once again since i have saved as a favorite it. Money and freedom is the greatest way to change, may you be rich and continue to help
    other people.

  367. капельница от похмелья в воронеже [url=https://kapelnicza-ot-pokhmelya-voronezh-17.ru]капельница от похмелья в воронеже[/url]

  368. Этот текст представляет собой обзор свежих данных и исследований в области медицины. Он призван помочь читателям понять, как научные достижения влияют на лечение, диагностику и общее состояние системы здравоохранения.
    Получить больше информации – [url=https://otravlenye.ru/vidy/alko-i-narko/kak-rabotaet-kodirovanie-ot-alkogolizma.html]detox24 в краснодаре[/url]

  369. реабилитация наркозависимых стационар [url=https://narkologicheskij-staczionar-sankt-peterburg-10.ru]реабилитация наркозависимых стационар[/url]

  370. Hi, I think your site might be having browser compatibility issues.
    When I look at your blog in Ie, it looks fine but when opening in Internet Explorer,
    it has some overlapping. I just wanted to give you a quick heads up!
    Other then that, superb blog!

  371. Этот документ охватывает важные аспекты медицинской науки, сосредотачиваясь на ключевых вопросах, касающихся здоровья населения. Мы рассматриваем свежие исследования, клинические рекомендации и лучшие практики, которые помогут улучшить качество лечения и профилактики заболеваний. Читатели получат возможность углубиться в различные медицинские дисциплины.
    Подробная информация доступна по запросу – [url=https://zdorovnik.com/pochemu-stoit-vybrat-chastnuyu-kliniku-lecheniya-alkogolizma-preimushhestva-i-osobennosti/]detox24[/url]

  372. Наша компания помогает быстро оформить справки, свидетельства и апостиль для учебы, работы, переезда и других целей. Мы обеспечиваем профессиональный подход к каждому обращению https://apostilium-moscow.com/spravki-iz-zags/

  373. нарколог на дому капельница цена [url=https://narkolog-na-dom-samara-9.ru]нарколог на дому капельница цена[/url]

  374. стационар наркологический санкт петербург [url=https://narkologicheskij-staczionar-sankt-peterburg-10.ru]стационар наркологический санкт петербург[/url]

  375. โพสต์นี้ ให้ข้อมูลดี ครับ
    ผม ไปเจอรายละเอียดของ เรื่องที่เกี่ยวข้อง
    สามารถอ่านได้ที่ Rosaline
    เผื่อใครสนใจ
    มีการยกตัวอย่างที่เข้าใจง่าย
    ขอบคุณที่แชร์ คอนเทนต์ดีๆ นี้
    และหวังว่าจะได้เห็นโพสต์แนวนี้อีก

  376. Randallsaste

    Вызов нарколога на дом в Казани. Круглосуточная наркологическая помощь на дому: лечение запоя, детоксикация, капельница, консультация. Анонимный прием. Узнайте цену в клинике.
    Изучить вопрос глубже – [url=https://narkolog-na-dom-kazan23.ru/]narkolog-na-dom-kazan23.ru/[/url]

  377. капельница на дому екатеринбург цены [url=https://kapelnicza-ot-pokhmelya-ekaterinburg-17.ru]капельница на дому екатеринбург цены[/url]

  378. Работа по программе строится последовательно: сначала зависимый признает болезнь и перестает объяснять употребление внешними обстоятельствами, затем переходит к самоанализу, разбору поступков, исправлению ошибок и формированию новых привычек. Каждый шаг помогает не перескакивать через сложные темы, а идти по понятной системе, где лечение зависимости связано с ответственностью, готовностью к изменениям и отказом от прежних оправданий.
    Подробнее – [url=https://reabilitaciya-12-shagov-moskva13.ru/]центры реабилитации 12 шагов[/url]

  379. Вывод из запоя в Казани на дому и в клинике: врач-нарколог, капельница, детоксикация, лечение алкоголизма, кодирование, реабилитация — круглосуточная помощь анонимно.
    Исследовать вопрос подробнее – [url=https://vyvod-iz-zapoya-kazan20.ru/]вывод из запоя круглосуточно[/url]

  380. Врач нарколог проводит первичный осмотр пациента, уточняет, сколько дней длится запой, какие напитки употреблялись, есть ли боль, рвотные позывы, бессонница, панические атаки, судороги, галлюцинации, повышенная тревожность или признаки белой горячки. После этого врач определяет, можно ли проводить вывод запоя на дому или лучше организовать лечение в стационаре.
    Получить дополнительные сведения – [url=https://vyvod-iz-zapoya-kazan23.ru/]наркологический вывод из запоя[/url]

  381. I am really impressed together with your writing skills and also with the layout
    to your blog. Is this a paid theme or did you modify it your self?
    Either way keep up the excellent high quality writing,
    it is rare to peer a great weblog like this
    one today..

  382. В этой публикации мы исследуем ключевые аспекты здоровья, включая влияние образа жизни на благополучие. Читатели узнают о важности правильного питания, физической активности и психического здоровья. Мы предоставим практические советы и рекомендации для поддержания здоровья и развития профилактических подходов.
    Кликни и узнай всё! – [url=https://www.medkursor.ru/other_about_health/vse/20010.html]detox24 в краснодаре[/url]

  383. It’s in fact very complicated in this full of activity life to listen news on TV,
    thus I only use the web for that purpose, and get
    the hottest information.

  384. Этот обзор предлагает структурированное изложение информации по актуальным вопросам. Материал подан так, чтобы даже новичок мог быстро освоиться в теме и начать использовать полученные знания в практике.
    Заходи — там интересно – [url=https://zazdorovie.net/meditsinskie-tsentry/7859_prichiny-vyzova-narkologa-na-dom]Похмельная служба в Краснодаре[/url]

  385. It’s the best time to make some plans for the future and it is time to be happy. I’ve read this post and if I could I wish to suggest you some interesting things or tips. Maybe you can write next articles referring to this article. I wish to read even more things about it!

  386. If most people wrote about this subject with the eloquence that you just did, I’m sure people would do much more than just read, they act. Great stuff here. Please keep it up.

  387. We are a group of volunteers and starting a new initiative in our community. Your blog provided us with valuable information to work on|.You have done a marvellous job!

  388. Woah this is just an insane amount of information, must of taken ages to compile so thanx so much for just sharing it with all of us. If your ever in any need of related information, just check out my own site!

  389. My partner and I absolutely love your blog and find the majority of
    your post’s to be just what I’m looking for. Do you offer guest
    writers to write content in your case? I wouldn’t
    mind publishing a post or elaborating on a lot of
    the subjects you write concerning here. Again, awesome website!

  390. 소액결제현금화 대신 고려할 수 있는 방법도 있습니다. 대표적으로 금융기관의 소액 대출, 간편 신용 서비스, 합법적인 자금 관리 서비스 등이 있습니다. 소액결제현금화

  391. Amazing issues here. I’m very glad to peer your post.
    Thank you a lot and I am looking forward to touch you. Will you please drop
    me a e-mail?

  392. Hey there! Would you mind if I share your
    blog with my zynga group? There’s a lot of folks that I think would really enjoy your content.

    Please let me know. Many thanks

  393. В этом обзоре представлены различные методы избавления от зависимости, включая терапевтические и психологические подходы. Мы сравниваем их эффективность и предоставляем рекомендации для тех, кто хочет вернуться к трезвой жизни. Читатели смогут найти информацию о реабилитационных центрах и поддерживающих группах.
    Изучить материалы по теме – [url=https://prostamed.ru/sovety/nemedlennaya-pomoshh-pri-zapoe.html]капельница от запоя[/url]

  394. brightcrestcollective

    Worth saying that the writing carries a particular kind of authority without making any explicit claims to it, and a stop at brightcrestcollective extended that earned authority feeling, sites that demonstrate expertise through the quality of their explanations rather than by stating credentials are sites I trust most and this site has it.

  395. I’ve read several good stuff here. Definitely worth bookmarking for revisiting. I surprise how much effort you put to make such a magnificent informative site.

  396. Hey just wanted to give you a quick heads up. The words in your content seem to be running off the screen in Safari.
    I’m not sure if this is a formatting issue or something to
    do with web browser compatibility but I thought I’d post to let you know.
    The design look great though! Hope you get the problem fixed
    soon. Kudos

  397. Thank you, I have just been searching for information about this topic for ages and yours is the greatest I’ve discovered till now. But, what about the conclusion? Are you sure about the source?

  398. Its like you read my mind! You seem to know a lot about this, like you wrote the book in it or something. I think that you can do with some pics to drive the message home a bit, but other than that, this is wonderful blog. A great read. I’ll certainly be back.

  399. наркологическая помощь на дому в воронеже [url=https://narkolog-na-dom-voronezh-14.ru]наркологическая помощь на дому в воронеже[/url]

  400. That’s some inspirational stuff. Never knew that opinions might be this varied. Thanks for all the enthusiasm to supply such helpful information here.

  401. I all the time used to study article in news papers but
    now as I am a user of web thus from now I am using
    net for posts, thanks to web.

  402. Wonderful items from you, man. I’ve remember your stuff previous to and you’re just extremely magnificent.
    I actually like what you have received right here, certainly like what you are
    saying and the best way through which you are saying it.
    You’re making it enjoyable and you continue to care for to keep
    it sensible. I can’t wait to read far more from you.
    This is actually a tremendous web site.

  403. Нужна бесплатная юридическая консультация? Переходите по запросу [url=https://vk.com/jurist.dmitrov]задать вопрос адвокату в Дмитрове[/url] и получите помощь опытных правозащитников в любой области права: семейные споры, долги и кредиты, недвижимость, трудовые конфликты, защита прав потребителей и многое другое. Задайте вопрос онлайн или по телефону и получите подробный разбор вашей ситуации и рекомендации адвоката по дальнейшим действиям. Консультация проводится бесплатно и конфиденциально.

  404. MichaelNadia

    Запоя лечение в клинике Сочи: вывод из запоя на дому, помощь нарколога, капельница, детоксикация, стационар, кодирование алкоголизма и реабилитация.
    Подробнее тут – [url=https://vivod-iz-zapoya-sochi21.ru/]вывод из запоя капельница на дому[/url]

  405. I am really impressed with your writing skills
    as well as with the layout on your weblog.
    Is this a paid theme or did you modify it yourself?
    Anyway keep up the excellent quality writing,
    it’s rare to see a great blog like this one today.

  406. Hello There. I discovered your blog the use of
    msn. That is a very well written article. I will make sure to bookmark it and come back to learn more of your useful info.

    Thank you for the post. I’ll certainly comeback.

  407. Hey! I know this is kinda off topic however , I’d figured I’d ask.

    Would you be interested in exchanging links or maybe
    guest writing a blog post or vice-versa? My blog discusses a lot of the
    same topics as yours and I feel we could greatly benefit from each
    other. If you might be interested feel free to shoot me an e-mail.
    I look forward to hearing from you! Terrific blog by the way!

  408. капельница от алкоголя на дому самара недорого [url=https://kapelnicza-ot-pokhmelya-samara-29.ru]капельница от алкоголя на дому самара недорого[/url]

  409. I Am Going To have to come back again when my course load lets up – however I am taking your Rss feed so i can go through your site offline. Thanks.

  410. кухни на заказ санкт петербург от производителя [url=https://kuhni-spb-60.ru]кухни на заказ санкт петербург от производителя[/url]

  411. Your idea is outstanding; the issue is something that not enough persons are speaking intelligently about. I’m very happy that I stumbled throughout this in my seek for one thing regarding this.

  412. Excellent post however , I was wanting to know if you could write a litte more on this subject?

    I’d be very grateful if you could elaborate a little bit more.
    Cheers!

  413. Good site! I truly love how it is easy on my eyes it is. I am wondering how I might be notified when a new post has been made. I’ve subscribed to your RSS which may do the trick? Have a great day!

  414. I just couldn’t leave your web site prior to suggesting that I really enjoyed the standard info an individual supply to your guests? Is going to be again continuously in order to inspect new posts