Find a dog trainer in your area. Some have "in board" training where they keep the dog for a week and they work with that dog. It is costly, but it is well worth the money because you will have a different dog when you get it back. However, you also have to continue training with the trainer because they have to train you as well. They will teach you how to work with your dog and correct her bad behaviors.
If you can not do that then at least sign up for training classes at PetSmart. Believe me, that is better than no training and they can focus on areas you are having problems in, they did with me and all of my dogs that I took to them for basic training.
The dog needs training and consistency and you can turn her into a great dog that both of you love. It will take time and dedication. I have 3 Yorkies and my puppies are 6 months old and they still have an accident but they are mostly house broken at this point. They are fairly well trained, but I have gone through enough training courses with previous dogs I owned over the last 20+ Years that I was able to train them myself, but part of going to a dog training class is to teach YOU how to train the dog and be a better dog owner.
It is worth the cost to invest in classes. Trust me, you will have a different dog if you do this and are dedicated to actually doing your homework with the class.
__________________  It's raining Yorkies here! LOL Teek  ,Rowan  , Raksha (Grand Puppy)  , Raelyn |