any efficient way to find surrounding adjective/verbs with respect to the target phrase in python [updated]?
POS-tagging consist of qualifying words by attaching a Part-Of-Speech to it. Part-Of-Speech is a tag that indicates the role of a word in a sentence (e.g. a noun, a transitive verb, a comparative adjective, etc.). You need this to know if a word is an adjective, and it is easily done with the nltk package you are using [source]:

&gt;&gt; nltk.pos_tag("The grand jury")
&gt;&gt; ('The', 'AT'), ('grand', 'JJ'), ('jury', 'NN')


Here, JJ means "Adjective" and "NN" means "Common Noun".

In your case, you are interested in neighbors adjectives. Does that mean "the closest adjective" in the sentence ? Or adjectives within a radius of the target, if any?
Depending on the definition, the way to do it differs.

For adjectives within a radius, as you have already selected words within a radius using the snippet you mentioned, you can POS-tag them and then select only those with a tag that indicates an adjective tag. 

&gt;&gt; adjective_tags = ["JJ", "JJR", "JJS"]
&gt;&gt; close_adjectives_list = [a[0] for a in nltk.pos_tag(" ".join(close_words_list)) if a[1] in adjective_tags ]


You can look at this answer that list most of existing POS-tags.