First, a caveat: I think that using get_the_title() as a tag filter is incredibly fragile. Unless all your post titles are single words, I doubt you'll ever get any matches. So, you really should be using some means of splitting up the words in the post title, if you're going to use them to query posts by matching post tag. Try exploding the results of get_the_title(), or, better yet: the Post permalink slug, e.g. via basename( get_permalink() ).
Second, why are you not simply tagging each article, and then querying by post tags? That would seem to be a heck of a lot easier, and effective, than querying by post tags that match the post title.
Third, do not use query_posts() for this purpose. The query_posts() function is intended only to modify the main loop query. If you need a secondary loop (and a list of related posts is certainly a secondary loop), then you need to use get_posts() or WP_Query().
Here's one way to build the secondary query/loop:
<?php
// Get the post slug
$related_post_slug = basename( get_permalink() );
// Explode the slug terms
// Since the post slug is constructed as
// "term-term-term-term", we simply
// Use the hyphen to explode the terms
$related_post_slug_terms = explode( '-', $related_post_slug );
// Implode the slug terms, using commas, for an OR query
// If you want an AND query, implode using "+"
$related_post_tags = implode( ',', $related_post_slug_terms );
// Query related posts
$related_posts = new WP_Query( array(
'tag' => $related_post_tags
) );
// Now loop through the related posts query
if( $related_posts->have_posts() ):
while ( $related_posts->have_posts() ) : $related_posts->the_post();
?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php
endwhile;
else:
?>
there are no related articled
<?php
endif;
// Reset post data, for good measure
wp_reset_postdata();
?>